Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/tanchiki/annotate/5cb99ccd2a7a/vector.py
Дата изменения: Unknown
Дата индексирования: Sat Mar 1 00:55:19 2014
Кодировка:
tanchiki: vector.py annotate

tanchiki

annotate vector.py @ 18:5cb99ccd2a7a

Added .hgignore.
author Peter Zotov <whitequark@whitequark.org>
date Mon, 20 Dec 2010 05:27:17 +0300
parents 3634a208da61
children dfdc1def5d24
rev   line source
whitequark@16 1 import math
whitequark@16 2
whitequark@16 3 class Vector(object):
whitequark@16 4
whitequark@16 5 def __init__(self, x=0 , y=0):
whitequark@16 6 self.x = x
whitequark@16 7 self.y = y
whitequark@16 8
whitequark@16 9 def __add__(self, other):
whitequark@16 10 result = Vector(0,0)
whitequark@16 11 result.x = self.x + other.x
whitequark@16 12 result.y = self.y + other.y
whitequark@16 13 return result
whitequark@16 14
whitequark@16 15 def __mul__(self, alpha):
whitequark@16 16 result = Vector()
whitequark@16 17 result.x = self.x * alpha
whitequark@16 18 result.y = self.y * alpha
whitequark@16 19 return result
whitequark@16 20
whitequark@16 21 def dot_product(self, other):
whitequark@16 22 return self.x*other.x + self.y*other.y
whitequark@16 23
whitequark@16 24 def __abs__(self):
whitequark@16 25 return (self.x**2 + self.y**2)**0.5
whitequark@16 26
whitequark@16 27 def __str__(self):
whitequark@16 28 return "(%s, %s)" % (self.x, self.y)
whitequark@16 29
whitequark@16 30 def is_null(self):
whitequark@16 31 if abs(self) == 0 :
whitequark@16 32 return 1
whitequark@16 33 else :
whitequark@16 34 return 0
whitequark@16 35
whitequark@16 36 def get_rho(self):
whitequark@16 37 return abs(self)
whitequark@16 38
whitequark@16 39 def set_rho(self, new_rho):
whitequark@16 40 if self.is_null() == 1 :
whitequark@16 41 self.x , self.y = new_rho*math.cos(self.phi) , new_rho*math.sin(self.phi)
whitequark@16 42 else :
whitequark@16 43 self.x , self.y = self.x*(new_rho/abs(self)) , self.y*(new_rho/abs(self))
whitequark@16 44
whitequark@16 45 rho = property(get_rho, set_rho)
whitequark@16 46
whitequark@16 47 def get_phi(self):
whitequark@16 48 phi = math.pi/2 - math.atan2(self.x, self.y)
whitequark@16 49 if self.is_null == 1:
whitequark@16 50 phi = 0
whitequark@16 51 return phi
whitequark@16 52
whitequark@16 53 def set_phi(self, new_phi):
whitequark@16 54 rho = abs(self)
whitequark@16 55 self.x, self.y = rho*math.cos(new_phi) , rho*math.sin(new_phi)
whitequark@16 56
whitequark@16 57 phi = property(get_phi, set_phi)