我主要不熟悉 vector ,所以想知道我是否可以在这里得到一些帮助。
我正在二维空间中进行凸包项目。我正在处理的具体功能需要确定一个点是在线的左侧、右侧还是直接在线上。
我被告知要使用叉积来执行此操作。这三个点在二维空间中创建一个三角形。计算叉积应该可以得到三角形的面积。如果面积为正,则点 p-> q-> r 逆时针方向工作,这意味着点 r 位于直线 p-q 的左侧。同样,如果面积为负,则点 p->q->r 顺时针工作,点 r 位于直线 p-q 的右侧。如果面积为0,则r位于p-q线上。
我知道如何处理最终结果,只是不知道我应该使用什么公式。
我的问题是我对叉积不熟悉,我所做的研究并没有阐明如何用 3 点来做到这一点。我的直觉是,这与使用 2 个 vector 的过程相同,但如果是这种情况,我不知道如何将我的 3 个点准确地转换为 2 个 vector 。
非常感谢!
最佳答案
你的三角形有边 q-p
和 r-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 ).
关于c - 作业——二维空间中3点的叉积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22156646/