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) |