【注意】最后更新于 March 15, 2016,文中内容可能已过时,请谨慎使用。
最近这几天在复习高数空间几何,本来没有什么,结果计算叉乘算的头都大了
叉乘本来也没有什么技术含量,就是一直重复的计算感觉没有太大意义。
想着这几天学了python,正好编着玩玩。再说好久都没更新了,更新下吧
向量之间的加减点乘都比较简单,就是对应的计算。
稍微显得复杂一点的是叉乘,实际也不复杂,就是一个矩阵的计算。
程序代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#coding:utf-8
class Matrix(object):
"""docstring for Matrix"""
def __init__(self, i,j,k):
super(Matrix, self).__init__()
self.dirs={}
self.dirs['i']=i
self.dirs['j']=j
self.dirs['k']=k
def __add__(self,obj):
return (self.dirs['i']+obj.dirs['i'],self.dirs['j']+obj.dirs['j'],self.dirs['k']+obj.dirs['k'])
def __sub__(self,obj):
return (self.dirs['i']-obj.dirs['i'],self.dirs['j']-obj.dirs['j'],self.dirs['k']-obj.dirs['k'])
#点乘就用乘
def __mul__(self,obj):
return (self.dirs['i']*obj.dirs['i'],self.dirs['j']*obj.dirs['j'],self.dirs['k']*obj.dirs['k'])
#叉乘用除代替
def __div__(self,obj):
dirsi=self.dirs['j']*obj.dirs['k']-self.dirs['k']*obj.dirs['j']
dirsj=self.dirs['k']*obj.dirs['i']-self.dirs['i']*obj.dirs['k']
dirsk=self.dirs['i']*obj.dirs['j']-self.dirs['j']*obj.dirs['i']
return (dirsi,dirsj,dirsk)
if __name__ == '__main__':
mat1=Matrix(1,2,3)
mat2=Matrix(4,5,6)
print(mat1/mat2)
|
不过我用python3这个除法运算符总是不能重载,也是无语了。
不得不说,python作为脚本语言确实真挺方便,效率之类的要求不高就用它了。
平时编写java用idea得卡很长时间,python平时开个sublime就够用了。
最近偶尔再看python的web应用,看得差不多了来实践实践
最近博客主题一直换过来换过去的,一直看不到非常满意的,有时间了自己改改希望找到个满意的吧。