计算垂直于由两个矢量生成的平面的3D矢量

时间:2009-10-19 23:22:15

标签: math 3d geometry

我是处理3D的新手,即使是简单的东西让我头晕目眩。对不起新手问题。

假设我有2个向量:

a(2,5,1)
b(1,-1,3)

这些向量“生成”一个平面。如何获得垂直于 a b 的第三个向量?

我可以使用向量c(A,B)在2D中将其转换为c'( - B,A)。

感谢您的帮助。

3 个答案:

答案 0 :(得分:14)

使用cross product

也就是说,垂直于ab的向量由( a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x)给出。

答案 1 :(得分:7)

您将这两个向量的交叉乘法运算得到它们生成的平面的第三个垂直向量:

P = A * B

这是:

<xp, yp, zp> = |i   j   k |
               |xa  ya  za| // The determinant
               |xb  yb  zb|

你所要做的就是解决这个决定因素,或者只是在Wikipedia中查找:)

答案 2 :(得分:2)

对于它的价值,这里是Quake 3的交叉产品函数,vec3_t被定义为x,y和z的三个浮点数组:

void CrossProduct( const vec3_t v1, const vec3_t v2, vec3_t cross ) {
    cross[0] = v1[1]*v2[2] - v1[2]*v2[1];
    cross[1] = v1[2]*v2[0] - v1[0]*v2[2];
    cross[2] = v1[0]*v2[1] - v1[1]*v2[0];
}