Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.cmm.msu.ru/hg/petri_dish/annotate/b78c555543a8/vector.py
Дата изменения: Unknown
Дата индексирования: Fri Feb 28 19:25:41 2014
Кодировка:
petri_dish: vector.py annotate

petri_dish

annotate vector.py @ 19:b78c555543a8

added vector module
author Yashina Ksenia <ksenia_yashina@kodomo.fbb.msu.ru>
date Mon, 20 Dec 2010 01:42:34 +0300
parents
children
rev   line source
ksenia_yashina@19 1 from math import *
ksenia_yashina@19 2
ksenia_yashina@19 3 class Vector(object):
ksenia_yashina@19 4 def __init__(self,x,y):
ksenia_yashina@19 5 self.x=x
ksenia_yashina@19 6 self.y=y
ksenia_yashina@19 7 def __abs__(self):
ksenia_yashina@19 8 return sqrt(self.x**2+self.y**2)
ksenia_yashina@19 9 def __add__(self,other):
ksenia_yashina@19 10 return Vector(self.x+other.x,self.y+other.y)
ksenia_yashina@19 11 def __sub__(self,other):
ksenia_yashina@19 12 return Vector(self.x-other.x,self.y-other.y)
ksenia_yashina@19 13 def __mul__(self,digit):
ksenia_yashina@19 14 return Vector(digit*self.x,digit*self.y)
ksenia_yashina@19 15 def angle(self):
ksenia_yashina@19 16 if self.x==0:
ksenia_yashina@19 17 if self.y>0:
ksenia_yashina@19 18 return -pi/2
ksenia_yashina@19 19 else:
ksenia_yashina@19 20 return pi/2
ksenia_yashina@19 21 if self.y==0:
ksenia_yashina@19 22 if self.x>0:
ksenia_yashina@19 23 return 0
ksenia_yashina@19 24 else:
ksenia_yashina@19 25 return pi
ksenia_yashina@19 26 m=abs(self)
ksenia_yashina@19 27 if acos(self.x/m)>pi/2 or (acos(self.x/m)>pi/2 and asin(self.y/m)<0):
ksenia_yashina@19 28 return atan(self.y/self.x)-pi
ksenia_yashina@19 29 else:
ksenia_yashina@19 30 return atan(self.y/self.x)
ksenia_yashina@19 31 def angleToCoord(self,angle):
ksenia_yashina@19 32 magn=abs(self)
ksenia_yashina@19 33 self.x=magn*cos(angle)
ksenia_yashina@19 34 self.y=magn*sin(angle)
ksenia_yashina@19 35 return self
ksenia_yashina@19 36 def magnitToCoord(self,m):
ksenia_yashina@19 37 ang=self.angle()
ksenia_yashina@19 38 self.x=m*cos(ang)
ksenia_yashina@19 39 self.y=m*sin(ang)
ksenia_yashina@19 40 return self