使用Python编写一个三维向量,实现向量的加法减法,点乘叉乘

 我来答
songwanqiang
2010-09-26 · TA获得超过2399个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:944万
展开全部

#  --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

结果:

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式