2 个 2D vector 的叉积

标签 c math vector 2d

谁能提供一个函数示例,该函数返回两个 二维 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/

相关文章:

math - 0.0 - 1.0 值范围的命名约定?

c - 如何编写返回指针数组的回调函数?

代码逻辑: Friday the Thirteenth (USACO)

python - 哪些技术限制阻止了 python 中格雷厄姆数的计算?

java - 这些子集的排列顺序是什么?

c++ - 初始化用户定义类的指针 vector

C - 使用位移运算符进行基本转换

c - 结构内部的匿名 union 与命名 union 类型?

c++ - 无法从 C++ vector 中按索引删除项目

java - Java 中 vector 可以引用二维数组吗?