使用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
结果: