【发布时间】:2015-02-25 22:26:21
【问题描述】:
我正在尝试实现一个脚本来分析我的一些数据。我有三个点(p1,p2,p3)的位置信息。我想从向量 p1p2 中找到点 p3 的角位移,如下图所示:
p3a, p3b, p3c, p3d 显示 p3 可能的相对位置。如图所示,我希望输出角度的符号来描述它与向量 p1p2 的相对位置。
我使用的代码如下(适配图):
v1 = p2 - p1;
x1 = v1(1);
y1 = v1(2);
v2 = p1 - p3;
x2 = v2(1);
y2 = v2(2);
angle = atan2d(x1*y2-y1*2,x1*x2+y1*y2);
当 p3 位于 p3a 时,这可以正常工作,给出正确大小的负角(-77 度)。但是,当 p3 位于 p3d 时,它会输出一个大的正角(+150 度),而不是所需的大负角。
【问题讨论】:
-
你应该有
v1=p2-p1和v2=p3-p1吗? -
我已经尝试过这种方法,但它实际上是所有的输出。不正确。当 p3 位于位置 a 时,此版本返回一个较大的正值 (103 度),而不是较小的负值 (-77),当 p3 位于位置 d 时,它返回一个较小的负值 (-16),而不是 a大的负值。
-
您是要找到线 P1->P2 和 P1->P3 之间的角度,还是 P2->P1 和 P1->P3 之间的角度?
-
我试图找到 P2->P1 和 P1->P3 之间的角度。对于命名时的混乱,我深表歉意。我也相信这会导致计算出现问题,因为当 P3 位于 P1 和 P2 的“前面”时,P2->P1 和 P1->P3 之间的角度确实是我想要的输出(图中的位置 a 和 b ),但是当 P3 位于位置 c 或 d 时,我相信它会返回两个向量之间的锐角,而不是所需的钝角。