我迷路了。我一直在尝试在以下位置实现此代码: http: //www.blackpawn.com/texts/pointinpoly/default.html
但是,我不知道两个二维向量之间存在的叉积怎么可能导致二维向量。这对我来说没有意义。这也出现在多边形和线之间相交的一些示例中,在精美的“实时碰撞检测”一书中 - 代码中甚至出现了二维向量之间的标量三元组(例如,参见第 189 页)。
问题是,据我所知,两个 2D 向量的伪叉积只能导致标量(v1.x v2.y-v1.y v2.x)或最多 3D向量如果一个添加两个零,因为该标量表示 Z 维度。但它如何产生二维向量?
我不是第一个问这个问题的人,巧合的是,当尝试使用相同的代码示例时:2 2D 向量的叉积但是,很容易看出,答案、更新时的原始问题以及该线程中的评论如果我敢这么说,最终会变得一团糟。
有谁知道我应该如何从两个二维向量的叉积中得到这些二维向量?如果要提供代码,我可以处理 C#、JavaScript 和一些 C++。
编辑 - 这是我上面提到的书中的一段代码:
int IntersectLineQuad(Point p, Point q, Point a, Point b, Point c, Point d, Point &r)
{
Vector pq = q - p;
Vector pa = a - p;
Vector pb = b - p;
Vector pc = c - p;
// Determine which triangle to test against by testing against diagonal first
Vector m = Cross(pc, pq);
float v = Dot(pa, m); // ScalarTriple(pq, pa, pc);
if (v >= 0.0f) {
// Test intersection against triangle abc
float u = -Dot(pb, m); // ScalarTriple(pq, pc, pb);
if (u < 0.0f) return 0;
float w = ScalarTriple(pq, pb, pa);
....