Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/petri_dish/rev/b78c555543a8
Дата изменения: Unknown
Дата индексирования: Tue Oct 2 08:36:05 2012
Кодировка:

Поисковые слова: m 31
petri_dish: b78c555543a8

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