Changeset 10378 in josm for trunk/src/org/openstreetmap/josm/data/projection/proj/LambertAzimuthalEqualArea.java
- Timestamp:
- 2016-06-15T10:30:37+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/projection/proj/LambertAzimuthalEqualArea.java
r9998 r10378 100 100 101 101 final double sinphi; 102 qp 103 rq 102 qp = qsfn(1); 103 rq = Math.sqrt(0.5 * qp); 104 104 sinphi = Math.sin(latitudeOfOrigin); 105 105 sinb1 = qsfn(sinphi) / qp; … … 107 107 switch (mode) { 108 108 case NORTH_POLE: // Fall through 109 case SOUTH_POLE: {110 dd 109 case SOUTH_POLE: 110 dd = 1.0; 111 111 xmf = ymf = rq; 112 112 break; 113 } 114 case EQUATORIAL: { 115 dd = 1.0 / rq; 113 case EQUATORIAL: 114 dd = 1.0 / rq; 116 115 xmf = 1.0; 117 116 ymf = 0.5 * qp; 118 117 break; 119 } 120 case OBLIQUE: { 121 dd = Math.cos(latitudeOfOrigin) / 122 (Math.sqrt(1.0 - e2 * sinphi * sinphi) * rq * cosb1); 118 case OBLIQUE: 119 dd = Math.cos(latitudeOfOrigin) / (Math.sqrt(1.0 - e2 * sinphi * sinphi) * rq * cosb1); 123 120 xmf = rq * dd; 124 121 ymf = rq / dd; 125 122 break; 126 } 127 default: { 123 default: 128 124 throw new AssertionError(mode); 129 }130 125 } 131 126 } … … 139 134 final double sinb, cosb, b, c, x, y; 140 135 switch (mode) { 141 case OBLIQUE: {136 case OBLIQUE: 142 137 sinb = q / qp; 143 138 cosb = Math.sqrt(1.0 - sinb * sinb); 144 c = 1.0 + sinb1 * sinb + cosb1 * cosb * coslam; 145 b = Math.sqrt(2.0 / c); 146 y = ymf * b * (cosb1 * sinb - sinb1 * cosb * coslam); 147 x = xmf * b * cosb * sinlam; 148 break; 149 } 150 case EQUATORIAL: { 139 c = 1.0 + sinb1 * sinb + cosb1 * cosb * coslam; 140 b = Math.sqrt(2.0 / c); 141 y = ymf * b * (cosb1 * sinb - sinb1 * cosb * coslam); 142 x = xmf * b * cosb * sinlam; 143 break; 144 case EQUATORIAL: 151 145 sinb = q / qp; 152 146 cosb = Math.sqrt(1.0 - sinb * sinb); 153 c = 1.0 + cosb * coslam; 154 b = Math.sqrt(2.0 / c); 155 y = ymf * b * sinb; 156 x = xmf * b * cosb * sinlam; 157 break; 158 } 159 case NORTH_POLE: { 147 c = 1.0 + cosb * coslam; 148 b = Math.sqrt(2.0 / c); 149 y = ymf * b * sinb; 150 x = xmf * b * cosb * sinlam; 151 break; 152 case NORTH_POLE: 160 153 c = (Math.PI / 2) + phi; 161 154 q = qp - q; … … 168 161 } 169 162 break; 170 } 171 case SOUTH_POLE: { 163 case SOUTH_POLE: 172 164 c = phi - (Math.PI / 2); 173 165 q = qp + q; … … 180 172 } 181 173 break; 182 } 183 default: { 174 default: 184 175 throw new AssertionError(mode); 185 }186 176 } 187 177 if (Math.abs(c) < EPSILON_LATITUDE) { … … 211 201 if (mode == Mode.OBLIQUE) { 212 202 ab = cCe * sinb1 + y * sCe * cosb1 / rho; 213 y 203 y = rho * cosb1 * cCe - y * sinb1 * sCe; 214 204 } else { 215 205 ab = y * sCe / rho; 216 y 206 y = rho * cCe; 217 207 } 218 208 lambda = Math.atan2(x, y);
Note:
See TracChangeset
for help on using the changeset viewer.