annotate vector.py @ 16:c71c27b09bc7
Fixed and updated overall repository format.
Removed CR's. Changed encoding to UTF-8.
Removed trailing whitespace and unified the rest.
Removed test code from vector.py.
author |
Peter Zotov <whitequark@whitequark.org> |
date |
Mon, 20 Dec 2010 04:35:08 +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) |