作业 - 2D空间中3点的交叉积

时间:2014-03-03 20:24:41

标签: c math vector

我对矢量大多不熟悉,所以想知道我是否可以在这里得到一些帮助。

我正在二维空间中进行凸壳项目。我正在处理的具体功能需要确定一个点是位于一条线的左侧,右侧还是直接位于该线上。

我被告知要使用跨产品来做这件事。这三个点在2d空间中创建一个三角形。计算十字产品应该给我三角形的面积。如果该区域是正的,则点p-> Q-> r逆时针工作,意味着点r位于p-q线的左侧。同样地,如果该区域是负的,则点p-> q-> r顺时针工作,并且点r位于线p-q的右侧。如果该区域为0,则r位于p-q线上。

我知道如何处理最终结果,我只是不知道我应该使用什么公式。

我的问题是我对跨产品不熟悉,而我所做的研究并没有说明如何用3分来做到这一点。我的预感是,它与使用2个向量的过程相同,但如果是这种情况,我不知道如何将我的3个点转换为2个向量。

非常感谢!

1 个答案:

答案 0 :(得分:2)

您的三角形有边q-pr-p,因此您必须计算

(q - p) x (r - p)

其中a x b决定因素

a x b = (a.x * b.y - a.y * b.x)

有时被称为“二维交叉产品”(例如,参见 http://mathworld.wolfram.com/CrossProduct.html)。