Syn*_*r0r 6 math cross-product
我有以下伪C/Java/C#代码:
int a[]= { 30, 20 };
int b[] = { 40, 50 };
int c[] = {12, 12};
Run Code Online (Sandbox Code Playgroud)
如何计算跨产品ABxAC?
在您的上一个问题中给出的解决方案基本上为您的所有点添加了Z = 0.在如此扩展的矢量上,您可以计算出您的叉积.在几何上,叉积产生的矢量与用于计算的两个矢量正交,因为两个矢量都位于XY平面中,结果只有Z分量.该z分量的符号表示该矢量在XY平面上向上或向下看.该符号取决于AB彼此顺时针或逆时针顺序.这反过来意味着z分量的符号显示您正在查看的点是否位于AB上的线的左侧或右侧.
因此,两个向量A和B的交叉乘积是向量
AxB = (AyBz ? AzBy, AzBx ? AxBz, AxBy ? AyBx)
Run Code Online (Sandbox Code Playgroud)
当Az和Bz为零时,你将留下该向量的第三个组成部分
AxBy - AyBx
Run Code Online (Sandbox Code Playgroud)
A是从a到b的向量,B是从a到c的向量
Ax = (b[x]-a[x])
Ay = (b[y]-a[y])
Bx = (c[x]-a[x])
By = (c[y]-a[y])
Run Code Online (Sandbox Code Playgroud)
给
AxBy - AyBx = (b[x]-a[x])*(c[y]-a[y])-(b[y]-a[y])*(c[x]-a[x])
Run Code Online (Sandbox Code Playgroud)
这是一个标量,那个标量的符号会告诉你,在矢量ab的左边或右边有一个点c