【发布时间】: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() 有一些想法,但没有像我想要的那样工作。 谢谢
【问题讨论】:
假设我是 2d 平面上的任意两个点 (p1(x1,y1), p2(x2,y1)) 并且两个点与中心 (c(c1,c2)) 形成一条线。因此我是两条线在同一点结束。我想知道如何计算这两条线之间的角度。我希望能够显示 0-2pi 的角度范围。还有 0-(-2pi) ,它让 p1 和 c 形成的线成为第 1 行和其他第 2 行。 我确实对使用 atan2() 有一些想法,但没有像我想要的那样工作。 谢谢
【问题讨论】:
找到中心和两点之间的增量向量
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 以获得您想要的表示,尽管您应该只在向人类展示角度时需要这样做
【讨论】:
将点转换为向量(从每个端点减去中心点)并使用dot product 计算角度。
【讨论】: