petri_dish
changeset 19:b78c555543a8
added vector module
author | Yashina Ksenia <ksenia_yashina@kodomo.fbb.msu.ru> |
---|---|
date | Mon, 20 Dec 2010 01:42:34 +0300 |
parents | 9fa0119fa63c |
children | 2df48c61bd42 |
files | vector.py |
diffstat | 1 files changed, 40 insertions(+), 0 deletions(-) [+] |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/vector.py Mon Dec 20 01:42:34 2010 +0300 1.3 @@ -0,0 +1,40 @@ 1.4 +from math import * 1.5 + 1.6 +class Vector(object): 1.7 + def __init__(self,x,y): 1.8 + self.x=x 1.9 + self.y=y 1.10 + def __abs__(self): 1.11 + return sqrt(self.x**2+self.y**2) 1.12 + def __add__(self,other): 1.13 + return Vector(self.x+other.x,self.y+other.y) 1.14 + def __sub__(self,other): 1.15 + return Vector(self.x-other.x,self.y-other.y) 1.16 + def __mul__(self,digit): 1.17 + return Vector(digit*self.x,digit*self.y) 1.18 + def angle(self): 1.19 + if self.x==0: 1.20 + if self.y>0: 1.21 + return -pi/2 1.22 + else: 1.23 + return pi/2 1.24 + if self.y==0: 1.25 + if self.x>0: 1.26 + return 0 1.27 + else: 1.28 + return pi 1.29 + m=abs(self) 1.30 + if acos(self.x/m)>pi/2 or (acos(self.x/m)>pi/2 and asin(self.y/m)<0): 1.31 + return atan(self.y/self.x)-pi 1.32 + else: 1.33 + return atan(self.y/self.x) 1.34 + def angleToCoord(self,angle): 1.35 + magn=abs(self) 1.36 + self.x=magn*cos(angle) 1.37 + self.y=magn*sin(angle) 1.38 + return self 1.39 + def magnitToCoord(self,m): 1.40 + ang=self.angle() 1.41 + self.x=m*cos(ang) 1.42 + self.y=m*sin(ang) 1.43 + return self 1.44 \ No newline at end of file