code: public Double getLatitudeOnGreatCircle(Position position, double longitudeDegrees) {
          double lonR = toRadians(longitudeDegrees);
          double lat1R = toRadians(lat);
          double lon1R = toRadians(lon);
          double lat2R = toRadians(position.getLat());
          double lon2R = toRadians(position.getLon());
  
          double sinDiffLon1RLon2R = sin(lon1R - lon2R);
          if (abs(sinDiffLon1RLon2R) < 0.00000001) {
              return null;
          } else {
              double cosLat1R = cos(lat1R);
              double cosLat2R = cos(lat2R);
              double numerator = sin(lat1R) * cosLat2R * sin(lonR - lon2R) - sin(lat2R) * cosLat1R
                      * sin(lonR - lon1R);
              double denominator = cosLat1R * cosLat2R * sinDiffLon1RLon2R;
              double radians = atan(numerator / denominator);
              return FastMath.toDegrees(radians);
          }
      }
docs: From http://williams.best.vwh.net/avform.htm (Latitude of point on GC).
  
  @param position
  @param longitudeDegrees
  @return