Ignore:
Timestamp:
2017-02-23T01:03:15+01:00 (7 years ago)
Author:
Don-vip
Message:

error-prone: fix FallThrough errors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/projection/proj/LambertAzimuthalEqualArea.java

    r10378 r11601  
    183183    @Override
    184184    public double[] invproject(double x, double y) {
    185         final double lambda, phi;
    186185        switch (mode) {
    187186            case EQUATORIAL: // Fall through
    188             case OBLIQUE: {
    189                 x /= dd;
    190                 y *= dd;
    191                 final double rho = Math.hypot(x, y);
    192                 if (rho < FINE_EPSILON) {
    193                     lambda = 0.0;
    194                     phi = latitudeOfOrigin;
    195                 } else {
    196                     double sCe, cCe, ab;
    197                     sCe = 2.0 * Math.asin(0.5 * rho / rq);
    198                     cCe = Math.cos(sCe);
    199                     sCe = Math.sin(sCe);
    200                     x *= sCe;
    201                     if (mode == Mode.OBLIQUE) {
    202                         ab = cCe * sinb1 + y * sCe * cosb1 / rho;
    203                         y = rho * cosb1 * cCe - y * sinb1 * sCe;
    204                     } else {
    205                         ab = y * sCe / rho;
    206                         y = rho * cCe;
    207                     }
    208                     lambda = Math.atan2(x, y);
    209                     phi = authlat(Math.asin(ab));
    210                 }
    211                 break;
     187            case OBLIQUE:
     188                return invprojectEO(x, y);
     189            case NORTH_POLE:
     190                return invprojectNS(x, -y);
     191            case SOUTH_POLE:
     192                return invprojectNS(x, y);
     193            default:
     194                throw new AssertionError(mode);
     195        }
     196    }
     197
     198    private double[] invprojectEO(double x, double y) {
     199        final double lambda;
     200        final double phi;
     201        x /= dd;
     202        y *= dd;
     203        final double rho = Math.hypot(x, y);
     204        if (rho < FINE_EPSILON) {
     205            lambda = 0.0;
     206            phi = latitudeOfOrigin;
     207        } else {
     208            final double ab;
     209            double sCe = 2.0 * Math.asin(0.5 * rho / rq);
     210            double cCe = Math.cos(sCe);
     211            sCe = Math.sin(sCe);
     212            x *= sCe;
     213            if (mode == Mode.OBLIQUE) {
     214                ab = cCe * sinb1 + y * sCe * cosb1 / rho;
     215                y = rho * cosb1 * cCe - y * sinb1 * sCe;
     216            } else {
     217                ab = y * sCe / rho;
     218                y = rho * cCe;
    212219            }
    213             case NORTH_POLE: {
    214                 y = -y;
    215                 // Fall through
     220            lambda = Math.atan2(x, y);
     221            phi = authlat(Math.asin(ab));
     222        }
     223        return new double[] {phi, lambda};
     224    }
     225
     226    private double[] invprojectNS(double x, double y) {
     227        final double lambda;
     228        final double phi;
     229        final double q = x*x + y*y;
     230        if (q == 0) {
     231            lambda = 0.;
     232            phi = latitudeOfOrigin;
     233        } else {
     234            double ab = 1.0 - q / qp;
     235            if (mode == Mode.SOUTH_POLE) {
     236                ab = -ab;
    216237            }
    217             case SOUTH_POLE: {
    218                 final double q = x*x + y*y;
    219                 if (q == 0) {
    220                     lambda = 0.;
    221                     phi = latitudeOfOrigin;
    222                 } else {
    223                     double ab = 1.0 - q / qp;
    224                     if (mode == Mode.SOUTH_POLE) {
    225                         ab = -ab;
    226                     }
    227                     lambda = Math.atan2(x, y);
    228                     phi = authlat(Math.asin(ab));
    229                 }
    230                 break;
    231             }
    232             default: {
    233                 throw new AssertionError(mode);
    234             }
     238            lambda = Math.atan2(x, y);
     239            phi = authlat(Math.asin(ab));
    235240        }
    236241        return new double[] {phi, lambda};
    237242    }
    238 
    239243
    240244    /**
Note: See TracChangeset for help on using the changeset viewer.