Example usage for java.lang Math atan

List of usage examples for java.lang Math atan

Introduction

In this page you can find the example usage for java.lang Math atan.

Prototype

public static double atan(double a) 

Source Link

Document

Returns the arc tangent of a value; the returned angle is in the range -pi/2 through pi/2.

Usage

From source file:Main.java

public static double[] Rec2Sph(double x, double y, double z) {
    double[] sph = new double[3];
    sph[0] = Math.sqrt(x * x + y * y + z * z);
    sph[1] = x == 0 ? 0 : Math.atan(Math.abs(y / x));
    if (x < 0)
        sph[1] = Math.PI - sph[1];
    if (y < 0)
        sph[1] *= -1;/*from w w w  .  j ava2 s .  co  m*/
    sph[2] = Math.asin(z / sph[0]);
    return sph;
}

From source file:Main.java

public static double[] mercatorToGeo(double[] e) {
    double j = Math.PI, f = j / 2, i = 6378137, n = 0.003356551468879694, k = 0.00000657187271079536,
            h = 1.764564338702e-8, m = 5.328478445e-11;
    double g = f - 2 * Math.atan(1 / Math.exp(e[1] / i));
    double l = g + n * Math.sin(2 * g) + k * Math.sin(4 * g) + h * Math.sin(6 * g) + m * Math.sin(8 * g);
    double d = e[0] / i;
    return new double[] { d * 180 / Math.PI, l * 180 / Math.PI };
}

From source file:Main.java

public static void MercatorToBD(double mercatorX, double mercatorY) {
    CbdX = mercatorY / 20037508.34 * 180;
    CbdX = 180 / Math.PI * (2 * Math.atan(Math.exp(CbdX * Math.PI / 180)) - Math.PI / 2);
    CbdY = mercatorX / 20037508.34 * 180;

    Log.d("CustomerActivity", "x" + Double.toString(CbdX));
    Log.d("CustomerActivity", "y" + Double.toString(CbdY));
}

From source file:Main.java

public static double pixelYToLatitude(int pixelY, double zoomLevel, int tileSize) {
    int mapSize = getMapSize(zoomLevel, tileSize);
    if (pixelY < 0 || pixelY > mapSize) {
        throw new IllegalArgumentException(
                "invalid pixelY coordinate at zoom level " + zoomLevel + ": " + pixelY);
    }/*from   w  w w. j  a v a2  s  .c o m*/
    double y = .5d - ((double) pixelY / mapSize);
    return 90d - 360d * Math.atan(Math.exp(-y * (2d * Math.PI))) / Math.PI;
}

From source file:Main.java

public static double tile2lat(int y, int aZoom) {

    final double MerkElipsK = 0.0000001;
    final long sradiusa = 6378137;
    final long sradiusb = 6356752;
    final double FExct = (double) Math.sqrt(sradiusa * sradiusa - sradiusb * sradiusb) / sradiusa;
    final int TilesAtZoom = 1 << aZoom;
    double result = (y - TilesAtZoom / 2) / -(TilesAtZoom / (2 * Math.PI));
    result = (2 * Math.atan(Math.exp(result)) - Math.PI / 2) * 180 / Math.PI;
    double Zu = result / (180 / Math.PI);
    double yy = ((y) - TilesAtZoom / 2);

    double Zum1 = Zu;
    Zu = Math.asin(1 - ((1 + Math.sin(Zum1)) * Math.pow(1 - FExct * Math.sin(Zum1), FExct))
            / (Math.exp((2 * yy) / -(TilesAtZoom / (2 * Math.PI)))
                    * Math.pow(1 + FExct * Math.sin(Zum1), FExct)));
    while (Math.abs(Zum1 - Zu) >= MerkElipsK) {
        Zum1 = Zu;/*from w  w w  .j  av  a  2s.  co  m*/
        Zu = Math.asin(1 - ((1 + Math.sin(Zum1)) * Math.pow(1 - FExct * Math.sin(Zum1), FExct))
                / (Math.exp((2 * yy) / -(TilesAtZoom / (2 * Math.PI)))
                        * Math.pow(1 + FExct * Math.sin(Zum1), FExct)));
    }

    result = Zu * 180 / Math.PI;

    return result;

}

From source file:Main.java

/**
 * Converts XY point from Spherical Mercator EPSG:900913 to lat/lon in WGS84
 * Datum/*from   ww  w  .  j ava2 s. co m*/
 * 
 * @return
 */
public static double[] MetersToLatLon(double mx, double my) {

    double lon = (mx / originShift) * 180.0;
    double lat = (my / originShift) * 180.0;

    lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180.0)) - Math.PI / 2.0);
    return new double[] { lat, lon };
}

From source file:Main.java

public static float atan(float value) {
    return (float) Math.atan(value);
}

From source file:Main.java

public static double calculateDistance(double lat1, double lng1, double lat2, double lng2) {
    int MAXITERS = 20;
    // Convert lat/long to radians
    lat1 *= Math.PI / 180.0;/*from  w  w  w .ja  v  a  2 s  .c om*/
    lat2 *= Math.PI / 180.0;
    lng1 *= Math.PI / 180.0;
    lng2 *= Math.PI / 180.0;

    double a = 6378137.0; // WGS84 major axis
    double b = 6356752.3142; // WGS84 semi-major axis
    double f = (a - b) / a;
    double aSqMinusBSqOverBSq = (a * a - b * b) / (b * b);

    double L = lng2 - lng1;
    double A = 0.0;
    double U1 = Math.atan((1.0 - f) * Math.tan(lat1));
    double U2 = Math.atan((1.0 - f) * Math.tan(lat2));

    double cosU1 = Math.cos(U1);
    double cosU2 = Math.cos(U2);
    double sinU1 = Math.sin(U1);
    double sinU2 = Math.sin(U2);
    double cosU1cosU2 = cosU1 * cosU2;
    double sinU1sinU2 = sinU1 * sinU2;

    double sigma = 0.0;
    double deltaSigma = 0.0;
    double cosSqAlpha = 0.0;
    double cos2SM = 0.0;
    double cosSigma = 0.0;
    double sinSigma = 0.0;
    double cosLambda = 0.0;
    double sinLambda = 0.0;

    double lambda = L; // initial guess
    for (int iter = 0; iter < MAXITERS; iter++) {
        double lambdaOrig = lambda;
        cosLambda = Math.cos(lambda);
        sinLambda = Math.sin(lambda);
        double t1 = cosU2 * sinLambda;
        double t2 = cosU1 * sinU2 - sinU1 * cosU2 * cosLambda;
        double sinSqSigma = t1 * t1 + t2 * t2; // (14)
        sinSigma = Math.sqrt(sinSqSigma);
        cosSigma = sinU1sinU2 + cosU1cosU2 * cosLambda; // (15)
        sigma = Math.atan2(sinSigma, cosSigma); // (16)
        double sinAlpha = (sinSigma == 0) ? 0.0 : cosU1cosU2 * sinLambda / sinSigma; // (17)
        cosSqAlpha = 1.0 - sinAlpha * sinAlpha;
        cos2SM = (cosSqAlpha == 0) ? 0.0 : cosSigma - 2.0 * sinU1sinU2 / cosSqAlpha; // (18)

        double uSquared = cosSqAlpha * aSqMinusBSqOverBSq; // defn
        A = 1 + (uSquared / 16384.0) * // (3)
                (4096.0 + uSquared * (-768 + uSquared * (320.0 - 175.0 * uSquared)));
        double B = (uSquared / 1024.0) * // (4)
                (256.0 + uSquared * (-128.0 + uSquared * (74.0 - 47.0 * uSquared)));
        double C = (f / 16.0) * cosSqAlpha * (4.0 + f * (4.0 - 3.0 * cosSqAlpha)); // (10)
        double cos2SMSq = cos2SM * cos2SM;
        deltaSigma = B * sinSigma * // (6)
                (cos2SM + (B / 4.0) * (cosSigma * (-1.0 + 2.0 * cos2SMSq)
                        - (B / 6.0) * cos2SM * (-3.0 + 4.0 * sinSigma * sinSigma) * (-3.0 + 4.0 * cos2SMSq)));

        lambda = L + (1.0 - C) * f * sinAlpha
                * (sigma + C * sinSigma * (cos2SM + C * cosSigma * (-1.0 + 2.0 * cos2SM * cos2SM))); // (11)

        double delta = (lambda - lambdaOrig) / lambda;
        if (Math.abs(delta) < 1.0e-12) {
            break;
        }
    }

    float distance = (float) (b * A * (sigma - deltaSigma));
    return distance;
}

From source file:Main.java

public static BigDecimal atan(BigDecimal val) {
    return BigDecimal.valueOf(Math.atan(val.doubleValue()));
}

From source file:Main.java

public static PointF[] getIntersectionPoints(PointF pMiddle, float radius, Double lineK) {
    PointF[] points = new PointF[2];

    float radian, xOffset = 0, yOffset = 0;
    if (lineK != null) {
        radian = (float) Math.atan(lineK);
        xOffset = (float) (Math.sin(radian) * radius);
        yOffset = (float) (Math.cos(radian) * radius);
    } else {/*from   ww w . java  2  s  .  c  o  m*/
        xOffset = radius;
        yOffset = 0;
    }
    points[0] = new PointF(pMiddle.x + xOffset, pMiddle.y - yOffset);
    points[1] = new PointF(pMiddle.x - xOffset, pMiddle.y + yOffset);

    return points;
}