我想计算以下的交叉乘积 x
和矢量 y
没有numpy或任何进口。
x = Vector(1,2,1,0)
y = Vector(0,1,2,1)
但我的结果总是错误的。我到底漏了什么?
def crossproduct(x, y):
final = Vector()
final.v[0] = y.v[1] * v.v[2] - x.v[2] * y.v[1]
final.v[1] = y.v[2] * v.v[3] - x.v[3] * y.v[2]
final.v[2] = y.v[3] * v.v[0] - x.v[0] * y.v[3]
final.v[3] = y.v[0] * v.v[1] - x.v[1] * y.v[0]
return final
解决交叉的问题 Vec4
(均质)等于把它作为一个简单的问题来解决。Vec3
(笛卡尔),因为你是在三维空间里,不管你怎么用。w
组成部分。
检查你的交叉公式,我通常使用的公式是这样的。
crossX = vector1.Y * vector2.Z - vector2.Y * vector1.Z
crossY = -(vector1.X * vector2.Z - vector2.X * vector1.Z)
crossZ = vector1.X * vector2.Y - vector2.X * vector1.Y
crossW = 0.0