如果我有a,b,c点,x,y是矢量形式,而不是我如何找到共线点。
fabs((b.x_-a.x _)*(c.y_-a.y _) - (c.x_-a.x _)*(b.y_-a.y_)它的使用方式如下..这是怎么回事?
答案 0 :(得分:6)
差异为您提供从a到b和a到c的内部向量。
然后,乘法表示这两个向量之间的叉积。 叉积与这两个矢量之间的角度的正弦成比例。 当这些点共线时,这两个向量之间的正弦为零。您的特定公式是更传统的3D交叉产品的2d收缩。 请参阅:http://en.wikipedia.org/wiki/Cross_product
答案 1 :(得分:4)
您可以将公式解释为交叉产品(如winwaed的答案中所述),或者您可以将其解释为关于向量ba和ca的斜率,如{{3}中所述}。
答案 2 :(得分:2)
fabs((b.x_-a.x_)*(c.y_-a.y_)-(c.x_-a.x_)*(b.y_-a.y_)
是交叉产品。
请注意:
fabs(crossProduct( (b-a), (c-a) ) ) == length(b-a)*distance of c from the line (a,b)
因此当且仅当c位于线(a,b)上时才为零,只提供a,b是不同的。
我有兴趣听到评论或更好的例子,说明为什么这可能是“不稳定的”。我一直以为它非常强大。