Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import sqrt
- from math import degrees
- from math import acos
- class Vector:
- def __init__(self, lst):
- self.vec = tuple(lst)
- def __repr__(self):
- return str(self.vec)
- def __len__(self):
- return len(self.vec)
- def __eq__(self,vector):
- return self.vec == vector.vec and len(self) == len(vector)
- def __add__(self,vector):
- if len(self) != len(vector):
- return None
- lst = [self.vec[i] + vector.vec[i] for i in range(len(self))]
- return Vector(lst)
- def __neg__(self):
- vector = [self.vec[i]*-1 for i in range(len(self))]
- return Vector(vector)
- def __sub__(self,vector):
- if len(self) != len(vector):
- return None
- lst = [self.vec[i] - vector.vec[i] for i in range(len(self))]
- return Vector(lst)
- def __mul__(self,vector):
- if isinstance(vector, Vector):
- if len(self) != len(vector):
- return None
- return sum([self.vec[i] * vector.vec[i] for i in range(len(self))])
- lst = [self.vec[i] - vector for i in range(len(self))]
- return Vector(lst)
- def __rmul__(self,vector):
- return self * vector
- def __getitem__(self,i):
- return self.vec[i]
- def norm(self):
- vector = self * self
- total = sum(vector.vec)
- return sqrt(total)
- def angle(self,vector):
- vect1 = self * vector
- vect2 = self.norm() * vector.norm()
- total = sum(vect1.vec)
- return degrees(acos(total/vect2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement