我有问题(也有解决方案)。我想知道的是如何达到“那个”解决方案。 “那个”解决方案非常完美,适用于所有可能的组合。
假设您在XY坐标系中有3个点:P1(x1, y1)
,P2(x2, y2)
和P3(x3, y3)
。
现在,将点P2连接到P3。它将导致“射线”源自点P2并通过点P3。我使用了单词 ray ,因为我只想在一个方向上,即从P2到P3。
现在,就P1点而言, ray P2 --> P3
是顺时针方向还是逆时针方向?
解决方案是:
使用以下公式来查找z1的值:
z1 = (x3 - x1)(y2 - y1) - (y3 - y1)(x2 - x1)
如果
z1
为正,则P2 --> P3
为顺时针。如果z1
为负数,则P2 --> P3
为逆时针。如果它为0,则点位于从P1
延伸的同一虚线上。
有人可以帮我解决一下这个解决方案吗?
答案 0 :(得分:3)
您编写的公式与两个向量的交叉乘积的公式非常相似。由于交叉产品的方向取决于CW / CCW配置,因此您可以轻松地将其用于解决您的问题。
您可以构建两条光线P1->P2
和P1->P3
。然后你可以拿他们的交叉产品。如果沿Z轴的产品组件为正,则P2和P3为逆时针顺序,反之亦然。
如果你试图这样做,结果,即十字产品中k的系数k(沿Z轴的单位向量),将与你提到的答案完全相同。
答案 1 :(得分:-1)
我不确定这是否有效。我试过了,但它一直给我两个相同的答案。 试试这些坐标:
Start point 0, 90, 0
Center point 0, 0, 0
End point 90, 0, 0
.....
directional vector 1, 0, 0
inverse directional vector -1, 0, 0