我需要计算两点之间的角度,以一个与给定两点相连的固定点.
这是一个说明我需要的图像:
这是我迄今为止所尝试的:
public static float GetAngleOfLineBetweenTwoPoints(float x1,float x2,float y1,float y2) { float xDiff = x2 - x1; float yDiff = y2 - y1; return (float) (Math.atan2(yDiff,xDiff) * (180 / Math.PI)); }
说没有提供正确的答案是毫无意义的.
解决方法
您可以使用以下方法使用Math.atan2方法计算弧度角:
public static double angleBetweenTwoPointsWithFixedPoint(double point1X,double point1Y,double point2X,double point2Y,double fixedX,double fixedY) { double angle1 = Math.atan2(point1Y - fixedY,point1X - fixedX); double angle2 = Math.atan2(point2Y - fixedY,point2X - fixedX); return angle1 - angle2; }
并用三点(使用Math.toDregrees将所得角度从弧度变换为度数):
System.out.println(Math.toDegrees( angleBetweenTwoPointsWithFixedPoint(0,// point 1's x and y 1,1,// point 2 1,0 // fixed point )));
输出:90.0
随时可以在解决方案中使用Java的标准Point或Line2D类.这只是为了证明它的作品.