/** * Implementation of the net.sf.geographiclib.GeodesicMask class * * Copyright (c) Charles Karney (2013-2014) and licensed * under the MIT/X11 License. For more information, see * https://geographiclib.sourceforge.io/ **********************************************************************/ package net.sf.geographiclib; /** * Bit masks for what geodesic calculations to do. *

* These masks do double duty. They specify (via the outmask parameter) * which results to return in the {@link GeodesicData} object returned by the * general routines {@link Geodesic#Direct(double, double, double, double, int) * Geodesic.Direct} and {@link Geodesic#Inverse(double, double, double, double, * int) Geodesic.Inverse} routines. They also signify (via the caps * parameter) to the {@link GeodesicLine#GeodesicLine(Geodesic, double, double, * double, int) GeodesicLine.GeodesicLine} constructor and to {@link * Geodesic#Line(double, double, double, int) Geodesic.Line} what capabilities * should be included in the {@link GeodesicLine} object. **********************************************************************/ public class GeodesicMask { protected static final int CAP_NONE = 0; protected static final int CAP_C1 = 1<<0; protected static final int CAP_C1p = 1<<1; protected static final int CAP_C2 = 1<<2; protected static final int CAP_C3 = 1<<3; protected static final int CAP_C4 = 1<<4; protected static final int CAP_ALL = 0x1F; protected static final int CAP_MASK = CAP_ALL; protected static final int OUT_ALL = 0x7F80; protected static final int OUT_MASK = 0xFF80; // Include LONG_UNROLL /** * No capabilities, no output. **********************************************************************/ public static final int NONE = 0; /** * Calculate latitude lat2. (It's not necessary to include this as a * capability to {@link GeodesicLine} because this is included by default.) **********************************************************************/ public static final int LATITUDE = 1<<7 | CAP_NONE; /** * Calculate longitude lon2. **********************************************************************/ public static final int LONGITUDE = 1<<8 | CAP_C3; /** * Calculate azimuths azi1 and azi2. (It's not necessary to * include this as a capability to {@link GeodesicLine} because this is * included by default.) **********************************************************************/ public static final int AZIMUTH = 1<<9 | CAP_NONE; /** * Calculate distance s12. **********************************************************************/ public static final int DISTANCE = 1<<10 | CAP_C1; /** * All of the above, the "standard" output and capabilities. **********************************************************************/ public static final int STANDARD = LATITUDE | LONGITUDE | AZIMUTH | DISTANCE; /** * Allow distance s12 to be used as input in the direct * geodesic problem. **********************************************************************/ public static final int DISTANCE_IN = 1<<11 | CAP_C1 | CAP_C1p; /** * Calculate reduced length m12. **********************************************************************/ public static final int REDUCEDLENGTH = 1<<12 | CAP_C1 | CAP_C2; /** * Calculate geodesic scales M12 and M21. **********************************************************************/ public static final int GEODESICSCALE = 1<<13 | CAP_C1 | CAP_C2; /** * Calculate area S12. **********************************************************************/ public static final int AREA = 1<<14 | CAP_C4; /** * All capabilities, calculate everything. (LONG_UNROLL is not included in * this mask.) **********************************************************************/ public static final int ALL = OUT_ALL| CAP_ALL; /** * Unroll lon2. **********************************************************************/ public static final int LONG_UNROLL = 1<<15; }