【问题标题】:Angle between two line start at the same point两条线之间的角度从同一点开始
【发布时间】:2010-08-31 20:09:56
【问题描述】:

假设我是 2d 平面上的任意两个点 (p1(x1,y1), p2(x2,y1)) 并且两个点与中心 (c(c1,c2)) 形成一条线。因此我是两条线在同一点结束。我想知道如何计算这两条线之间的角度。我希望能够显示 0-2pi 的角度范围。还有 0-(-2pi) ,它让 p1 和 c 形成的线成为第 1 行和其他第 2 行。 我确实对使用 atan2() 有一些想法,但没有像我想要的那样工作。 谢谢

【问题讨论】:

    标签: geometry angle atan2


    【解决方案1】:

    找到中心和两点之间的增量向量

    d1 = p1-c;
    d2 = p2-c;
    

    您可以使用 atan2 来获取其中每个的角度:

    angle1 = atan2(d1.Y, d1.X)
    angle2 = atan2(d2.Y, d2.X)
    

    你想要的角度就是不同:

    a = angle2-angle1;
    

    根据您是否希望角度表示为 0 和 2pi 或 -2pi 和 0 之间,您可以使用 while 循环不断减去 2pi / 添加 2pi 以获得您想要的表示,尽管您应该只在向人类展示角度时需要这样做

    【讨论】:

      【解决方案2】:

      将点转换为向量(从每个端点减去中心点)并使用dot product 计算角度。

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 2019-07-09
        • 2019-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多