Geometry 直线相对中心坐标的斜率计算算法

Geometry 直线相对中心坐标的斜率计算算法,geometry,atan2,Geometry,Atan2,请帮助计算坡度的算法 我们有一个笛卡尔坐标系。X在Y的正上方。有一条线穿过坐标的中心。 需要确定相对于轴OX的角度 这就是我要做的 某些功能转移到原点(顶行)和行尾 测定dx,dy 儿童在atan2中释放两个参数(dy,dx) 以弧度为单位返回结果 但是!I atan2仅在180度范围内工作。180后,它会向另一个方向移动 那么问题是:寻找角度的正确算法是什么?我需要取dy,dx值吗?如何计算所有360度及以上的弧切线?我很乐意听到具体的算法或代码注释。 塔克斯 static inline CG

请帮助计算坡度的算法 我们有一个笛卡尔坐标系。X在Y的正上方。有一条线穿过坐标的中心。 需要确定相对于轴OX的角度

这就是我要做的

  • 某些功能转移到原点(顶行)和行尾
  • 测定dx,dy
  • 儿童在atan2中释放两个参数(dy,dx)
  • 以弧度为单位返回结果
  • 但是!I 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;
    }
    
    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 .