-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvector.py
More file actions
45 lines (33 loc) · 1.23 KB
/
vector.py
File metadata and controls
45 lines (33 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/python3
class Vector(object):
def __init__(self, rows):
self.rows = list(rows)
def x(self):
return self.rows[0]
def y(self):
return self.rows[1]
def z(self):
return self.rows[2]
def __len__(self):
return len(self.rows)
def __abs__(self):
sqr = 0
for value in self.rows:
sqr += value**2
return sqr**(0.5)
def __add__(self, rows_vector):
if len(self) != len(rows_vector):
raise ValueError('Vector must have same len')
return Vector([i+j for i, j in zip(self.rows, rows_vector.rows)])
def __sub__(self, rows_vector):
if len(self) != len(rows_vector):
raise ValueError('Vector must have same len')
return Vector([i-j for i, j in zip(self.rows, rows_vector.rows)])
def __mul__(self, value):
return Vector([i*value for i in self.rows])
def norm(self, value=1):
return Vector([i/abs(self) for i in self.rows])*value
def __repr__(self):
return '<v:{}>'.format(','.join([str(i) for i in self.rows]))
def __eq__(self, vector):
return self.rows == vector.rows