Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.cmm.msu.ru/hg/petri_dish/raw-annotate/2df48c61bd42/vector.py
Дата изменения: Unknown
Дата индексирования: Fri Feb 11 10:48:39 2011
Кодировка:

Поисковые слова: m 2

ksenia_yashina@19: from math import *
ksenia_yashina@19:
ksenia_yashina@19: class Vector(object):
ksenia_yashina@19: def __init__(self,x,y):
ksenia_yashina@19: self.x=x
ksenia_yashina@19: self.y=y
ksenia_yashina@19: def __abs__(self):
ksenia_yashina@19: return sqrt(self.x**2+self.y**2)
ksenia_yashina@19: def __add__(self,other):
ksenia_yashina@19: return Vector(self.x+other.x,self.y+other.y)
ksenia_yashina@19: def __sub__(self,other):
ksenia_yashina@19: return Vector(self.x-other.x,self.y-other.y)
ksenia_yashina@19: def __mul__(self,digit):
ksenia_yashina@19: return Vector(digit*self.x,digit*self.y)
ksenia_yashina@19: def angle(self):
ksenia_yashina@19: if self.x==0:
ksenia_yashina@19: if self.y>0:
ksenia_yashina@19: return -pi/2
ksenia_yashina@19: else:
ksenia_yashina@19: return pi/2
ksenia_yashina@19: if self.y==0:
ksenia_yashina@19: if self.x>0:
ksenia_yashina@19: return 0
ksenia_yashina@19: else:
ksenia_yashina@19: return pi
ksenia_yashina@19: m=abs(self)
ksenia_yashina@19: if acos(self.x/m)>pi/2 or (acos(self.x/m)>pi/2 and asin(self.y/m)<0):
ksenia_yashina@19: return atan(self.y/self.x)-pi
ksenia_yashina@19: else:
ksenia_yashina@19: return atan(self.y/self.x)
ksenia_yashina@19: def angleToCoord(self,angle):
ksenia_yashina@19: magn=abs(self)
ksenia_yashina@19: self.x=magn*cos(angle)
ksenia_yashina@19: self.y=magn*sin(angle)
ksenia_yashina@19: return self
ksenia_yashina@19: def magnitToCoord(self,m):
ksenia_yashina@19: ang=self.angle()
ksenia_yashina@19: self.x=m*cos(ang)
ksenia_yashina@19: self.y=m*sin(ang)
ksenia_yashina@19: return self