在均匀坐标(x,y,z,w)上求两个三维向量的交叉乘积。

问题描述 投票:-1回答:1

我想计算以下的交叉乘积 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
python python-3.x math 3d
1个回答
1
投票

解决交叉的问题 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
© www.soinside.com 2019 - 2024. All rights reserved.