请帮助计算斜率的算法 所以我们有一个笛卡尔坐标系。 X在Y顶部。有一条线穿过坐标中心。 需要确定相对于轴OX的角度。
所以这就是我正在做的事情
但是!我atan2只能在180度范围内工作。 180后进入另一个方向。
所以问题是:找到角度的正确算法是什么?我需要在数量上采用dy,dx值吗?如何使360和更多的反正切计算?我很高兴听到特定的算法或代码注释。 感谢名单!
static inline CGFloat angleBetweenLinesInRadians2 (CGPoint line1Start, CGPoint line1End)
{
CGFloat dx = 0, dy = 0;
dx = line1End.x - line1Start.x; / / whether to do fabs (line1End.x - line1Start.x);
dy = line1End.y - line1Start.y;
CGFloat rads = atan2 (dy, dx); / / whether to do fabs (rads)
return rads;
}
答案 0 :(得分:4)
atan2()应该在区间[-pi,pi]中返回一个值(即[-180,180]),并使用x和y的符号来计算象限。 (C++ ref)
从技术上讲,你有360度。
答案 1 :(得分:0)
用于计算0到360度角的公式:
f(x,y)= 180-90 *(1+符号(x))*(1-符号(y ^ 2))-45 *(2+符号(x))*符号(y)< / p>
-180/pi()*sign(x*y)*atan((abs(x)-abs(y))/(abs(x)+abs(y)))
x=x2-x1 and y=y2-y1 .