共线点

时间:2010-11-03 02:30:13

标签: c++ c vector

如果我有a,b,c点,x,y是矢量形式,而不是我如何找到共线点。

fabs((b.x_-a.x _)*(c.y_-a.y _) - (c.x_-a.x _)*(b.y_-a.y_)它的使用方式如下..这是怎么回事?

3 个答案:

答案 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是不同的。

我有兴趣听到评论或更好的例子,说明为什么这可能是“不稳定的”。我一直以为它非常强大。