Example usage for java.lang Math toRadians

List of usage examples for java.lang Math toRadians

Introduction

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

Prototype

public static double toRadians(double angdeg) 

Source Link

Document

Converts an angle measured in degrees to an approximately equivalent angle measured in radians.

Usage

From source file:org.apache.calcite.runtime.SqlFunctions.java

/** SQL <code>RADIANS</code> operator applied to double values. */
public static double radians(double b0) {
    return Math.toRadians(b0);
}

From source file:com.jillesvangurp.geo.GeoGeometry.java

/**
 * Calculate the approximate area. Like the distance, this is an approximation and you should account for an error
 * of about half a percent.//from w ww.jav a2  s  . c  om
 *
 * @param polygon linestring
 * @return approximate area.
 */
public static double area(double[][] polygon) {
    Validate.isTrue(polygon.length > 3, "polygon should have at least three elements");

    double total = 0;
    double[] previous = polygon[0];

    double[] center = polygonCenter(polygon);
    double xRef = center[0];
    double yRef = center[1];

    for (int i = 1; i < polygon.length; i++) {
        double[] current = polygon[i];
        // convert to cartesian coordinates in meters, note this not very exact
        double x1 = ((previous[0] - xRef) * (6378137 * PI / 180)) * Math.cos(yRef * PI / 180);
        double y1 = (previous[1] - yRef) * (Math.toRadians(6378137));
        double x2 = ((current[0] - xRef) * (6378137 * PI / 180)) * Math.cos(yRef * PI / 180);
        double y2 = (current[1] - yRef) * (Math.toRadians(6378137));

        // calculate crossproduct
        total += x1 * y2 - x2 * y1;
        previous = current;
    }

    return 0.5 * Math.abs(total);
}

From source file:gwap.rest.LocationService.java

/**
 * Berechnet die Entfernung zwischen position und destination in Metern.
 * @param positionLatitude: Latitude der Ausgangsposition
 * @param positionLongitude: Longitude der Ausgangsposition
 * @param destinationLatitude: Latitude des Ziels
 * @param destinationLongitude: Longitude des Ziels
 * @return Entfernung in Metern/* w  w  w.  j  a va 2s.  com*/
 */
private Double getDistance(double positionLatitude, double positionLongitude, double destinationLatitude,
        double destinationLongitude) {
    double earthRadius = 6369000;
    double dLat = Math.toRadians(destinationLatitude - positionLatitude);
    double dLng = Math.toRadians(destinationLongitude - positionLongitude);
    double sindLat = Math.sin(dLat / 2);
    double sindLng = Math.sin(dLng / 2);
    double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2) * Math.cos(Math.toRadians(positionLatitude))
            * Math.cos(Math.toRadians(destinationLatitude));
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double distance = earthRadius * c;
    return distance;
}

From source file:jp.furplag.util.commons.NumberUtils.java

/**
 * {@link java.lang.Math#toRadians(double)}.
 *
 * @param degrees/* ww  w  .j  a v a2  s .c  om*/
 * @return the radian represented by specified angle.
 */
public static double toRadians(final Number degrees) {
    if (Float.class.equals(NumberObject.of(degrees).wrapper))
        return Math.toRadians(valueOf(degrees, float.class));

    return valueOf(degrees, double.class) / 180d * Math.PI;
}

From source file:com.appnativa.rare.ui.chart.jfreechart.ChartHandler.java

protected void setLabelAngel(iPlatformComponent chartPanel, ChartDefinition cd, boolean range) {
    Axis a = getAxis(cd, range);// w w  w. ja  v a  2s .  c om
    int angle = range ? cd.getRangeAxis().getAngle() : cd.getDomainAxis().getAngle();

    if (a != null) {
        float ang = (float) Math.toRadians(angle);

        if (!SNumber.isEqual(ang, a.getLabelAngle())) {
            a.setLabelAngle(ang);

            LabelData[] labels = null;

            if (a instanceof NumberAxisEx) {
                labels = ((NumberAxisEx) a).categoryLabels;
            } else if (a instanceof NumberAxis3DEx) {
                labels = ((NumberAxis3DEx) a).categoryLabels;
            }

            if (labels != null) {
                UIFont f = getAxisLabelFont(cd.getRangeAxis());

                remeasureLabels(labels, UIFontMetrics.getMetrics(f), angle);
            }
        }
    }
}

From source file:spectrogram.Spectrogram.java

private void drawRotatedText(int tx, int ty, double theta, String text) {

    AffineTransform fontAT = new AffineTransform();
    fontAT.setToIdentity();//from w  ww. j  a v  a  2  s.c  o  m

    fontAT.rotate(Math.toRadians(theta));

    Font curFont = grph.getFont();
    Font rotFont = curFont.deriveFont(fontAT);

    grph.setFont(rotFont);
    grph.drawString(text, tx, ty);

    grph.setFont(curFont);
}

From source file:spinworld.gui.RadarPlot.java

private void drawTicks(Graphics2D g2, Rectangle2D radarArea, double axisAngle, int cat) {
    double[] ticks = { 0.5d, 1d };
    for (int i = 0; i < ticks.length; i++) {
        double tick = ticks[i];
        Point2D middlePoint = getWebPoint(radarArea, axisAngle, tick);
        double xt = middlePoint.getX();
        double yt = middlePoint.getY();
        double angrad = Math.toRadians(-axisAngle);
        g2.translate(xt, yt);//from   ww  w  . j a v a2 s  .co m
        g2.rotate(angrad);
        g2.drawLine(0, (int) -TICK_MARK_LENGTH / 2, 0, (int) TICK_MARK_LENGTH / 2);
        g2.rotate(-angrad);
        g2.translate(-xt, -yt);
        drawTickLabel(g2, radarArea, middlePoint, axisAngle, cat, tick);
    }
}

From source file:SIFT_Volume_Stitching.java

/**
  Rotation at 90, 180 and 270 only of the image stack
  @param image//from w w  w .ja  v  a  2s .c  o  m
  @param rotation around x
  @param rotation around y
  @param rotation around z
  @return rotated image
 */
public ImagePlus StackRotation(ImagePlus imp, int Rx, int Ry, int Rz) {
    /* Parameters */
    int Xm = imp.getWidth();
    int Ym = imp.getHeight();
    int Zm = imp.getStackSize();
    ImageStack impStack = imp.getStack();
    int x = Xm;
    int y = Ym;
    int z = Zm;

    int cosRx = (int) Math.round(Math.cos(Math.toRadians(Rx)));
    int sinRx = (int) Math.round(Math.sin(Math.toRadians(Rx)));

    int cosRy = (int) Math.round(Math.cos(Math.toRadians(Ry)));
    int sinRy = (int) Math.round(Math.sin(Math.toRadians(Ry)));

    int cosRz = (int) Math.round(Math.cos(Math.toRadians(Rz)));
    int sinRz = (int) Math.round(Math.sin(Math.toRadians(Rz)));

    /* New Stack Size */
    int newZm = ((x * sinRz + y * cosRz) * sinRx + z * cosRx) * cosRy - (x * cosRz - y * sinRz) * sinRy;
    int newXm = ((x * sinRz + y * cosRz) * sinRx + z * cosRx) * sinRy + (x * cosRz - y * sinRz) * cosRy;
    int newYm = (x * sinRz + y * cosRz) * cosRx - z * sinRx;

    /* Image Creation */
    ImagePlus impR = NewImage.createImage("Rotation", Math.abs(newXm), Math.abs(newYm), Math.abs(newZm),
            imp.getBitDepth(), 1);
    ImageStack imgR = impR.getStack();

    /* Calibration */
    Calibration cal = new Calibration();
    double Cx = imp.getCalibration().pixelWidth;
    double Cy = imp.getCalibration().pixelHeight;
    double Cz = imp.getCalibration().pixelDepth;

    double newCz = Math
            .abs(((Cx * sinRz + Cy * cosRz) * sinRx + Cz * cosRx) * cosRy - (Cx * cosRz - Cy * sinRz) * sinRy);
    double newCx = Math
            .abs(((Cx * sinRz + Cy * cosRz) * sinRx + Cz * cosRx) * sinRy + (Cx * cosRz - Cy * sinRz) * cosRy);
    double newCy = Math.abs((Cx * sinRz + Cy * cosRz) * cosRx - Cz * sinRx);

    cal.pixelWidth = newCx;
    cal.pixelHeight = newCy;
    cal.pixelDepth = newCz;

    cal.setUnit(imp.getCalibration().getUnit());

    /* Rotation */
    int max = 0;
    int newX = 0;
    int newY = 0;
    int newZ = 0;
    for (z = 0; z < Zm; z++) {
        for (x = 0; x < Xm; x++) {
            for (y = 0; y < Ym; y++) {

                newZ = ((x * sinRz + y * cosRz) * sinRx + z * cosRx) * cosRy - (x * cosRz - y * sinRz) * sinRy;
                if (newZm < 0) {
                    newZ = newZ - newZm - 1;
                }
                newX = ((x * sinRz + y * cosRz) * sinRx + z * cosRx) * sinRy + (x * cosRz - y * sinRz) * cosRy;
                if (newXm < 0) {
                    newX = newX - newXm - 1;
                }
                newY = (x * sinRz + y * cosRz) * cosRx - z * sinRx;
                if (newYm < 0) {
                    newY = newY - newYm - 1;
                }

                imgR.setVoxel(newX, newY, newZ, impStack.getVoxel(x, y, z));

                if (impStack.getVoxel(x, y, z) > max) {
                    max = (int) impStack.getVoxel(x, y, z);
                }
            }
        }
    }

    ImagePlus imp2 = new ImagePlus("imp", imgR);
    imp2.setCalibration(cal);

    /** 12 bit Images */
    if (255 < max && max <= 4095) {
        ImagePlus.setDefault16bitRange(12);
    }

    return imp2;
}

From source file:TransformExplorer.java

CoordSys(float axisLength) {
    super(Switch.CHILD_ALL);

    float coordSysLength = axisLength;
    float labelOffset = axisLength / 20.0f;
    float axisRadius = axisLength / 500.0f;
    float arrowRadius = axisLength / 125.0f;
    float arrowHeight = axisLength / 50.0f;
    float tickRadius = axisLength / 125.0f;
    float tickHeight = axisLength / 250.0f;

    // Set the Switch to allow changes
    setCapability(Switch.ALLOW_SWITCH_READ);
    setCapability(Switch.ALLOW_SWITCH_WRITE);

    // Set up an appearance to make the Axis have
    // grey ambient, black emmissive, grey diffuse and grey specular
    // coloring.//from  w  w  w  . j  a v a2s . com
    //Material material = new Material(grey, black, grey, white, 64);
    Material material = new Material(white, black, white, white, 64);
    Appearance appearance = new Appearance();
    appearance.setMaterial(material);

    // Create a shared group to hold one axis of the coord sys
    SharedGroup coordAxisSG = new SharedGroup();

    // create a cylinder for the central line of the axis
    Cylinder cylinder = new Cylinder(axisRadius, coordSysLength, appearance);
    // cylinder goes from -coordSysLength/2 to coordSysLength in y
    coordAxisSG.addChild(cylinder);

    // create the shared arrowhead
    Cone arrowHead = new Cone(arrowRadius, arrowHeight, appearance);
    SharedGroup arrowHeadSG = new SharedGroup();
    arrowHeadSG.addChild(arrowHead);

    // Create a TransformGroup to move the arrowhead to the top of the
    // axis
    // The arrowhead goes from -arrowHeight/2 to arrowHeight/2 in y.
    // Put it at the top of the axis, coordSysLength / 2
    tmpVector.set(0.0f, coordSysLength / 2 + arrowHeight / 2, 0.0f);
    tmpTrans.set(tmpVector);
    TransformGroup topTG = new TransformGroup();
    topTG.setTransform(tmpTrans);
    topTG.addChild(new Link(arrowHeadSG));
    coordAxisSG.addChild(topTG);

    // create the minus arrowhead
    // Create a TransformGroup to turn the cone upside down:
    // Rotate 180 degrees around Z axis
    tmpAxisAngle.set(0.0f, 0.0f, 1.0f, (float) Math.toRadians(180));
    tmpTrans.set(tmpAxisAngle);

    // Put the arrowhead at the bottom of the axis
    tmpVector.set(0.0f, -coordSysLength / 2 - arrowHeight / 2, 0.0f);
    tmpTrans.setTranslation(tmpVector);
    TransformGroup bottomTG = new TransformGroup();
    bottomTG.setTransform(tmpTrans);
    bottomTG.addChild(new Link(arrowHeadSG));
    coordAxisSG.addChild(bottomTG);

    // Now add "ticks" at 1, 2, 3, etc.

    // create a shared group for the tick
    Cylinder tick = new Cylinder(tickRadius, tickHeight, appearance);
    SharedGroup tickSG = new SharedGroup();
    tickSG.addChild(tick);

    // transform each instance and add it to the coord axis group
    int maxTick = (int) (coordSysLength / 2);
    int minTick = -maxTick;
    for (int i = minTick; i <= maxTick; i++) {
        if (i == 0)
            continue; // no tick at 0

        // use a TransformGroup to offset to the tick location
        TransformGroup tickTG = new TransformGroup();
        tmpVector.set(0.0f, (float) i, 0.0f);
        tmpTrans.set(tmpVector);
        tickTG.setTransform(tmpTrans);
        // then link to an instance of the Tick shared group
        tickTG.addChild(new Link(tickSG));
        // add the TransformGroup to the coord axis
        coordAxisSG.addChild(tickTG);
    }

    // add a Link to the axis SharedGroup to the coordSys
    addChild(new Link(coordAxisSG)); // Y axis

    // Create TransformGroups for the X and Z axes
    TransformGroup xAxisTG = new TransformGroup();
    // rotate 90 degrees around Z axis
    tmpAxisAngle.set(0.0f, 0.0f, 1.0f, (float) Math.toRadians(90));
    tmpTrans.set(tmpAxisAngle);
    xAxisTG.setTransform(tmpTrans);
    xAxisTG.addChild(new Link(coordAxisSG));
    addChild(xAxisTG); // X axis

    TransformGroup zAxisTG = new TransformGroup();
    // rotate 90 degrees around X axis
    tmpAxisAngle.set(1.0f, 0.0f, 0.0f, (float) Math.toRadians(90));
    tmpTrans.set(tmpAxisAngle);
    zAxisTG.setTransform(tmpTrans);
    zAxisTG.addChild(new Link(coordAxisSG));
    addChild(zAxisTG); // Z axis

    // Add the labels. First we need a Font3D for the Text3Ds
    // select the default font, plain style, 0.5 tall. Use null for
    // the extrusion so we get "flat" text since we will be putting it
    // into an oriented Shape3D
    Font3D f3d = new Font3D(new Font("Default", Font.PLAIN, 1), null);

    // set up the +X label
    Text3D plusXText = new Text3D(f3d, "+X", origin, Text3D.ALIGN_CENTER, Text3D.PATH_RIGHT);
    // orient around the local origin
    OrientedShape3D plusXTextShape = new OrientedShape3D(plusXText, appearance,
            OrientedShape3D.ROTATE_ABOUT_POINT, origin);
    // transform to scale down to 0.15 in height, locate at end of axis
    TransformGroup plusXTG = new TransformGroup();
    tmpVector.set(coordSysLength / 2 + labelOffset, 0.0f, 0.0f);
    tmpTrans.set(0.15f, tmpVector);
    plusXTG.setTransform(tmpTrans);
    plusXTG.addChild(plusXTextShape);
    addChild(plusXTG);

    // set up the -X label
    Text3D minusXText = new Text3D(f3d, "-X", origin, Text3D.ALIGN_CENTER, Text3D.PATH_RIGHT);
    // orient around the local origin
    OrientedShape3D minusXTextShape = new OrientedShape3D(minusXText, appearance,
            OrientedShape3D.ROTATE_ABOUT_POINT, origin);
    // transform to scale down to 0.15 in height, locate at end of axis
    TransformGroup minusXTG = new TransformGroup();
    tmpVector.set(-coordSysLength / 2 - labelOffset, 0.0f, 0.0f);
    tmpTrans.set(0.15f, tmpVector);
    minusXTG.setTransform(tmpTrans);
    minusXTG.addChild(minusXTextShape);
    addChild(minusXTG);

    // set up the +Y label
    Text3D plusYText = new Text3D(f3d, "+Y", origin, Text3D.ALIGN_CENTER, Text3D.PATH_RIGHT);
    // orient around the local origin
    OrientedShape3D plusYTextShape = new OrientedShape3D(plusYText, appearance,
            OrientedShape3D.ROTATE_ABOUT_POINT, origin);
    // transform to scale down to 0.15 in height, locate at end of axis
    TransformGroup plusYTG = new TransformGroup();
    tmpVector.set(0.0f, coordSysLength / 2 + labelOffset, 0.0f);
    tmpTrans.set(0.15f, tmpVector);
    plusYTG.setTransform(tmpTrans);
    plusYTG.addChild(plusYTextShape);
    addChild(plusYTG);

    // set up the -Y label
    Text3D minusYText = new Text3D(f3d, "-Y", origin, Text3D.ALIGN_CENTER, Text3D.PATH_RIGHT);
    // orient around the local origin
    OrientedShape3D minusYTextShape = new OrientedShape3D(minusYText, appearance,
            OrientedShape3D.ROTATE_ABOUT_POINT, origin);
    // transform to scale down to 0.15 in height, locate at end of axis
    TransformGroup minusYTG = new TransformGroup();
    tmpVector.set(0.0f, -coordSysLength / 2 - labelOffset, 0.0f);
    tmpTrans.set(0.15f, tmpVector);
    minusYTG.setTransform(tmpTrans);
    minusYTG.addChild(minusYTextShape);
    addChild(minusYTG);

    // set up the +Z label
    Text3D plusZText = new Text3D(f3d, "+Z", origin, Text3D.ALIGN_CENTER, Text3D.PATH_RIGHT);
    // orient around the local origin
    OrientedShape3D plusZTextShape = new OrientedShape3D(plusZText, appearance,
            OrientedShape3D.ROTATE_ABOUT_POINT, origin);
    // transform to scale down to 0.15 in height, locate at end of axis
    TransformGroup plusZTG = new TransformGroup();
    tmpVector.set(0.0f, 0.0f, coordSysLength / 2 + labelOffset);
    tmpTrans.set(0.15f, tmpVector);
    plusZTG.setTransform(tmpTrans);
    plusZTG.addChild(plusZTextShape);
    addChild(plusZTG);

    // set up the -Z label
    Text3D minusZText = new Text3D(f3d, "-Z", origin, Text3D.ALIGN_CENTER, Text3D.PATH_RIGHT);
    // orient around the local origin
    OrientedShape3D minusZTextShape = new OrientedShape3D(minusZText, appearance,
            OrientedShape3D.ROTATE_ABOUT_POINT, origin);
    // transform to scale down to 0.15 in height, locate at end of axis
    TransformGroup minusZTG = new TransformGroup();
    tmpVector.set(0.0f, 0.0f, -coordSysLength / 2 - labelOffset);
    tmpTrans.set(0.15f, tmpVector);
    minusZTG.setTransform(tmpTrans);
    minusZTG.addChild(minusZTextShape);
    addChild(minusZTG);
}

From source file:spinworld.gui.RadarPlot.java

private void drawTickLabel(Graphics2D g2, Rectangle2D radarArea, Point2D middlePoint, double _axisAngle,
        int cat, double tick) {
    double axisAngle = normalize(_axisAngle);
    double _origin = getOrigin(cat).doubleValue();
    double max = getMaxValue(cat).doubleValue();
    double tickValue = ((max - _origin) * tick) + _origin;
    String label = "" + Math.round(tickValue * 1000) / 1000d;
    FontRenderContext frc = g2.getFontRenderContext();
    Rectangle2D labelBounds = getLabelFont().getStringBounds(label, frc);
    int labelW = (int) labelBounds.getWidth();
    int labelH = (int) labelBounds.getHeight();

    double centerX = radarArea.getCenterX();
    double centerY = radarArea.getCenterY();

    double adj = middlePoint.distance(centerX, centerY);
    double opp = TICK_MARK_LENGTH / 2 + 4;
    double hyp = Math.sqrt(Math.pow(opp, 2) + Math.pow(adj, 2));
    double angle = Math.toDegrees(Math.atan(opp / adj));
    int charHeight = g2.getFontMetrics().getHeight();
    int charWidth = g2.getFontMetrics().charWidth('M');

    double alphaRad = Math.toRadians(axisAngle - angle);
    double labelX = centerX + (hyp * Math.cos(alphaRad));
    double labelY = centerY - (hyp * Math.sin(alphaRad)) + labelH;

    //        g2.draw(new Line2D.Double(centerX, centerY, labelX, labelY - labelH)); // test line

    double sinGap = Math.pow(Math.sin(Math.toRadians(axisAngle)), 2);
    if (axisAngle > 90 && axisAngle < 270) {
        labelY -= labelH;//from   w w w . jav  a2 s . c o  m
        labelY += (charHeight * sinGap / 2);
    } else {
        labelY -= (charHeight * sinGap / 2);
    }
    double cosGap = Math.pow(Math.cos(Math.toRadians(axisAngle)), 2);
    if (axisAngle > 180) {
        labelX -= labelW;
        labelX += (charWidth * cosGap / 2);
    } else {
        labelX -= (charWidth * cosGap / 2);
    }
    //        g2.drawRect((int) labelX, (int) labelY - labelH, labelW, labelH); // test rectangle
    g2.setPaint(getLabelPaint());
    g2.setFont(getLabelFont());
    g2.drawString(label, (float) labelX, (float) labelY);
}