Luk*_*ark 10 c# math distance angle
可能重复:
如何计算两点相对于水平轴的角度?
我一直在寻找这个年龄,这真的很烦我,所以我决定只问...
提供我有两个点(即X1,Y1,和X2,Y2),我想计算这两个点之间的角度,假设的是,当Y1 == y 2和X1> X2的角度为180度...
我有以下代码,我一直在使用(使用高中的知识),我似乎无法产生预期的结果.
float xDiff = x1 - x2;
float yDiff = y1 - y2;
return (float)Math.Atan2(yDiff, xDiff) * (float)(180 / Math.PI);
Run Code Online (Sandbox Code Playgroud)
提前谢谢,我很沮丧......
pha*_*t0m 21
从我收集的内容来看,您需要以下内容:
P1 -------- P2=> 0°P2 -------- P1=> 180°你说,你希望角度顺时针方向增加.
如此旋转该线P1 -------- P2,P1则P2该角度必须为90°.
但是,如果我们沿相反方向旋转,则P1低于P2该角度,角度为-90°或270°.
atan2基础:考虑P1到原点和测量P2相对于原点的角度,然后P1 -------- P2将正确屈服0.
float xDiff = x2 - x1;
float yDiff = y2 - y1;
return Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI;
Run Code Online (Sandbox Code Playgroud)
但是,atan2让我们在CCW方向上增加角度.在原点周围沿CCW方向旋转,y经过以下值:
这意味着,我们可以简单地反转符号y来翻转方向.但是因为C#的坐标从上到下增加,所以在计算时符号已经反转了yDiff.
| 归档时间: |
|
| 查看次数: |
39744 次 |
| 最近记录: |