C 作业-二维空间中3个点的叉积

C 作业-二维空间中3个点的叉积,c,math,vector,C,Math,Vector,我对向量基本上不熟悉,所以想知道我是否可以在这里得到一些帮助 我在做一个二维空间的凸包项目。我正在处理的特定函数需要确定一个点是位于直线的左侧、右侧还是直接位于直线上 我被告知要用叉积来做这件事。这三个点在二维空间中创建一个三角形。计算叉积可以得到三角形的面积。如果面积为正,则点p->q->r逆时针工作,这意味着点r位于线p-q的左侧。同样,如果面积为负值,点p->q->r顺时针工作,点r位于线p-q的右侧。如果面积为0,r位于线p-q上 我知道如何处理最终结果,我只是不知道我应该用什么公式 我

我对向量基本上不熟悉,所以想知道我是否可以在这里得到一些帮助

我在做一个二维空间的凸包项目。我正在处理的特定函数需要确定一个点是位于直线的左侧、右侧还是直接位于直线上

我被告知要用叉积来做这件事。这三个点在二维空间中创建一个三角形。计算叉积可以得到三角形的面积。如果面积为正,则点p->q->r逆时针工作,这意味着点r位于线p-q的左侧。同样,如果面积为负值,点p->q->r顺时针工作,点r位于线p-q的右侧。如果面积为0,r位于线p-q上

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

我的问题是,我不熟悉交叉积,我所做的研究没有阐明如何做到这一点,有3点。我的直觉是,这与使用2个向量的过程相同,但如果是这样的话,我不知道如何准确地将我的3个点转换为2个向量


非常感谢

你的三角形有边
q-p
r-p
,所以你必须计算

(q - p) x (r - p)
其中,
a x b
是决定因素

这有时被称为“二维叉积”(参见示例
).

这个问题似乎离题了,因为它与数学有关,与编程几乎没有关系。请参阅。请注意,叉积是在向量和非点之间定义的。对于三点,你可以声明其边的两个向量,如下面Martin R给出的答案所示。@Vache,我很抱歉,这样做会更好。请参阅维基百科上的,其中广泛讨论了这个叉积及其在查找凸包中的应用。没有保证完整算法的正确性或完整性,但基本知识已经正确涵盖;q=(2,5);r=(3,6);它是a=(1,1)和b=(2,2)?因此,ab=(1*2-1*2)=(2-2)=0?如果我的随机数为0,可能不是很理想,但这个过程正确吗?@bumbleBumble:正确。这三个点在一条直线上,因此结果为零。@bumbleBumble:Btw,叉积给出了由差向量跨越的平行四边形的面积,它是三角形面积的两倍。
a x b = (a.x * b.y - a.y * b.x)