Geometry 直线相对中心坐标的斜率计算算法
请帮助计算坡度的算法 我们有一个笛卡尔坐标系。X在Y的正上方。有一条线穿过坐标的中心。 需要确定相对于轴OX的角度 这就是我要做的Geometry 直线相对中心坐标的斜率计算算法,geometry,atan2,Geometry,Atan2,请帮助计算坡度的算法 我们有一个笛卡尔坐标系。X在Y的正上方。有一条线穿过坐标的中心。 需要确定相对于轴OX的角度 这就是我要做的 某些功能转移到原点(顶行)和行尾 测定dx,dy 儿童在atan2中释放两个参数(dy,dx) 以弧度为单位返回结果 但是!I atan2仅在180度范围内工作。180后,它会向另一个方向移动 那么问题是:寻找角度的正确算法是什么?我需要取dy,dx值吗?如何计算所有360度及以上的弧切线?我很乐意听到具体的算法或代码注释。 塔克斯 static inline CG
那么问题是:寻找角度的正确算法是什么?我需要取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;
}
atan2()应该返回区间[-pi,pi](即[-180,180])中的值,并使用x和y的符号计算象限。()
从技术上讲,你有360度。atan2()应该返回间隔[-pi,pi](即[-180,180])中的一个值,并使用x和y的符号来计算象限。()
所以从技术上讲,你有360度。一个计算0到360度角的公式: f(x,y)=180-90*(1+符号(x))*(1-符号(y^2))-45*(2+符号(x))*符号(y)
计算从0到360度的角度的公式: f(x,y)=180-90*(1+符号(x))*(1-符号(y^2))-45*(2+符号(x))*符号(y)
所以问题是:找到角度的正确算法是什么?我是否需要将dy,dx值取为幅值?不要使用幅值-只要使用带有正确符号的dy和dw,atan2()将返回正确的角度值。如果您希望所有角度均为正值(即从[-180180]转换为[0360]),只需保持正值不变,并在负值上加360即可。例如,-90°将给出270°。对不起,我的意思是我需要计算dx的绝对值吗?dy=fabs(line1End.y-line1Start.y)不,你不应该,因为atan2()使用dy和dx的符号来给出正确的角度值。那么问题是:寻找角度的正确算法是什么?我是否需要将dy,dx值取为幅值?不要使用幅值-只要使用带有正确符号的dy和dw,atan2()将返回正确的角度值。如果您希望所有角度均为正值(即从[-180180]转换为[0360]),只需保持正值不变,并在负值上加360即可。例如,-90°将给出270°。对不起,我的意思是我是否需要计算dx的绝对值,dy?dy=fabs(line1End.y-line1Start.y)不,您不应该,因为atan2()使用dy和dx的符号来给出正确的角度值。
-180/pi()*sign(x*y)*atan((abs(x)-abs(y))/(abs(x)+abs(y)))
x=x2-x1 and y=y2-y1 .