2个2D向量的交叉积

时间:2010-02-25 10:37:22

标签: c math vector 2d

任何人都可以提供返回 TWO 2d向量的叉积的函数示例吗?我正在尝试实施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 个答案:

答案 0 :(得分:16)

(注意: 2个向量的交叉乘积仅在3D和7D spaces中定义。)

代码计算位于 xy -plane上的2个向量的 z - 组件:

vec2D a, b;
...
double z = a.x * b.y - b.x * a.y;
return z;

答案 1 :(得分:0)