众所周知,可以使用叉积来计算法线向量。我的问题是我在不同坐标系中获得了同一对向量的不同法线向量长度。这里是代码Price
/ Vs12
是已知向量。
Vs13
def crossProduct(Vs12,Vs13):
Fs1=Vs12[1]*Vs13[2]-Vs13[1]*Vs12[2]
Fs2=-Vs12[0]*Vs13[2]+Vs13[0]*Vs12[2]
Fs3=Vs12[0]*Vs13[1]-Vs13[0]*Vs12[1]
Fs=np.array([Fs1,Fs2,Fs3])
return Fs
def vectorLenth(x,y,z):
lenth_V=(x**2+y**2+z**2)**1/2
return lenth_V
lenth_Fs=vectorLenth(Fs[0],Fs[1],Fs[2])
lenth_Ft=vectorLenth(Ft[0],Ft[1],Ft[2])
lenth_Fs
3460825052841.606
lenth_Ft
3460925056778.934
/ Fs
是不同坐标系中的法线向量。该值在允许的误差范围内吗?
坐标系1中三个点的长度是
Ft
在坐标系2中,它们是
3277117.1973625002,15955141.603046002,5011646.0980985
它们很近。
答案 0 :(得分:0)
您的实现似乎正确。但是,由于两个向量a
和b
的叉积的大小由||a x b|| = ||a||*||b||*sin(theta)
给出,其中theta
是a
和{{ 1}},叉积的长度与所选坐标系无关。您使用什么坐标系?在两个坐标系中都没有给定的向量b
和Vs12
,就不可能分辨出出了什么问题。