天天看點

python三維向量運算_使用Python編寫一個三維向量,實作向量的加法減法,點乘叉乘...

#  --coding: gb2312--

class vector3:

def __init__(self, x_ = 0, y_ = 0, z_ = 0): #構造函數

self.x = x_

self.y = y_

self.z = z_

def __add__(self, obj): #重載+作為加号

return vector3(self.x+obj.x, self.y+obj.y, self.z+obj.z)

def __sub__(self, obj): #重載-作為減号

return vector3(self.x-obj.x, self.y-obj.y, self.z-obj.z)

def __mul__(self, obj): #重載*作為點乘

return vector3(self.x*obj.x, self.y*obj.y, self.z*obj.z)

def __pow__(self, obj): #重載**作為叉乘。不好,偏離了常理上的意義,可以考慮重載其他符号,或者直接寫函數。

return vector3(self.y*obj.z-obj.y*self.z, self.z*obj.x-self.x*obj.z, self.x*obj.y-obj.x*self.y)

def __str__(self): #供print列印的字元串

return str(self.x)+','+str(self.y)+','+str(self.z)

v1 = vector3(1, 2, 3)

v2 = vector3(0, 1, 2)

print v1 + v2

print v1 - v2

print v1 * v2

print v1 ** v2

結果:

python三維向量運算_使用Python編寫一個三維向量,實作向量的加法減法,點乘叉乘...