我有以下一段伪 C/Java/C# 代码:
int a[]= { 30, 20 };
int b[] = { 40, 50 };
int c[] = {12, 12};
如何计算叉积 ABxAC?
上一个问题中给出的解决方案基本上为您的所有点添加了 Z=0。在如此扩展的向量上,你可以计算出叉积。在几何上,叉积产生一个与用于计算的两个向量正交的向量,因为两个向量都位于 XY 平面内,因此结果将只有 Z 分量。 z 分量的符号表示该向量在 XY 平面上是向上看还是向下看。该符号取决于 AB 彼此按顺时针或逆时针顺序排列。这反过来意味着 z 分量的符号会告诉您您正在查看的点是否位于 AB 线上的左侧或右侧。
因此,两个向量 A 和 B 的叉积为vector
AxB = (AyBz − AzBy, AzBx − AxBz, AxBy − AyBx)
当 Az 和 Bz 为零时,剩下该向量的第三个分量
AxBy - AyBx
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])
giving
AxBy - AyBx = (b[x]-a[x])*(c[y]-a[y])-(b[y]-a[y])*(c[x]-a[x])
这是一个标量,该标量的符号将告诉您点 c 位于向量 ab 的左侧还是右侧
或者你可以看看堆栈溢出 https://stackoverflow.com/questions/243945/calculating-a-2d-vectors-cross-product or gamedev http://www.gamedev.net/community/forums/topic.asp?topic_id=542870
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)