2个2D向量的交叉积

7 c math 2d vector

任何人都可以提供一个返回TWO 2d向量的叉积函数的例子吗?我正在尝试实现此算法.

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;    
}
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 16

(注意:2个向量叉积仅在3D和7D空间中定义.)

代码计算位于xy平面上的2个向量的z分量:

vec2D a, b;
...
double z = a.x * b.y - b.x * a.y;
return z;
Run Code Online (Sandbox Code Playgroud)

  • @ tm1rbrt:"CrossProduct"应该是一个完整的3D交叉产品.您始终可以添加两个0组件. (2认同)
  • x/y平面中两个向量的三维交叉积始终沿z轴,因此提供两个已知为零的附加数字毫无意义.另一种看待它的方法:最接近的2-D相当于3-D交叉产品是一个返回标量的操作(上面的那个). (2认同)