谁能提供一个函数示例,该函数返回两个 二维 vector 的叉积?我正在尝试实现 this algorithm .
C 代码会很棒。谢谢。
编辑:找到了另一种适用于 2D 并且非常简单的方法。
bool tri2d::inTriangle(vec2d pt) {
float AB = (pt.y-p1.y)*(p2.x-p1.x) - (pt.x-p1.x)*(p2.y-p1.y);
float CA = (pt.y-p3.y)*(p1.x-p3.x) - (pt.x-p3.x)*(p1.y-p3.y);
float BC = (pt.y-p2.y)*(p3.x-p2.x) - (pt.x-p2.x)*(p3.y-p2.y);
if (AB*BC>0.f && BC*CA>0.f)
return true;
return false;
}
最佳答案
(注意: 2 个 vector 的叉积仅在 3D 和 7D spaces 中定义。)
代码计算位于 xy 平面上的 2 个 vector 的 z 分量:
vec2D a, b;
...
double z = a.x * b.y - b.x * a.y;
return z;
关于2 个 2D vector 的叉积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2333292/