# ATAN2根据xy坐标计算角度

# angular
`float centerX = v.getX() + (float) v.getWidth() / 2;                    float centerY = v.getY() + (float) v.getHeight() / 2;                    double angle = Math.atan2(touchRawY - centerY, touchRawX - centerX) * 180 / Math.PI;                    v.setRotation((float) angle - 45);                    // scale                    float xx = (touchRawX >= centerX ? deltaRawX : -deltaRawX);                    float yy = (touchRawY >= centerY ? deltaRawY : -deltaRawY);                    float sf = (v.getScaleX() + xx / v.getWidth() + v.getScaleY() + yy / v.getHeight()) / 2;                    v.setScaleX(sf);                    v.setScaleY(sf);`

`/**     * Returns the angle theta from the conversion of rectangular     * coordinates ({@code x}, {@code y}) to polar     * coordinates (r, theta).     * This method computes the phase theta by computing an arc tangent     * of {@code y/x} in the range of -pi to pi. Special     * cases:     *`
• If either argument is NaN, then the result is NaN.
*
• If the first argument is positive zero and the second argument
* is positive, or the first argument is positive and finite and the
* second argument is positive infinity, then the result is positive
* zero.
*
• If the first argument is negative zero and the second argument
* is positive, or the first argument is negative and finite and the
* second argument is positive infinity, then the result is negative zero.
*
• If the first argument is positive zero and the second argument
* is negative, or the first argument is positive and finite and the
* second argument is negative infinity, then the result is the
* {@code double} value closest to pi.
*
• If the first argument is negative zero and the second argument
* is negative, or the first argument is negative and finite and the
* second argument is negative infinity, then the result is the
* {@code double} value closest to -pi.
*
• If the first argument is positive and the second argument is
* positive zero or negative zero, or the first argument is positive
* infinity and the second argument is finite, then the result is the
* {@code double} value closest to pi/2.
*
• If the first argument is negative and the second argument is
* positive zero or negative zero, or the first argument is negative
* infinity and the second argument is finite, then the result is the
* {@code double} value closest to -pi/2.
*
• If both arguments are positive infinity, then the result is the
* {@code double} value closest to pi/4.
*
• If the first argument is positive infinity and the second argument
* is negative infinity, then the result is the {@code double}
* value closest to 3*pi/4.
*
• If the first argument is negative infinity and the second argument
* is positive infinity, then the result is the {@code double} value
* closest to -pi/4.
*
• If both arguments are negative infinity, then the result is the
* {@code double} value closest to -3*pi/4.
`     *     *`

The computed result must be within 2 ulps of the exact result.
* Results must be semi-monotonic.
*
* @param y the ordinate coordinate
* @param x the abscissa coordinate
* @return the theta component of the point
* (rtheta)
* in polar coordinates that corresponds to the point
* (xy) in Cartesian coordinates.
*/
@FastNative
public static native double atan2(double y, double x);