Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.61 KB | None | 0 0
  1. from math import sqrt
  2. from math import degrees
  3. from math import acos
  4.  
  5. class Vector:
  6.  
  7.     def __init__(self, lst):
  8.         self.vec = tuple(lst)
  9.    
  10.     def __repr__(self):
  11.         return str(self.vec)
  12.    
  13.     def __len__(self):
  14.         return len(self.vec)
  15.    
  16.     def __eq__(self,vector):
  17.         return self.vec == vector.vec and len(self) == len(vector)
  18.    
  19.     def __add__(self,vector):
  20.         if len(self) != len(vector):
  21.             return None
  22.         lst = [self.vec[i] + vector.vec[i] for i in range(len(self))]
  23.         return Vector(lst)
  24.    
  25.     def __neg__(self):
  26.         vector = [self.vec[i]*-1 for i in range(len(self))]
  27.         return Vector(vector)
  28.    
  29.     def __sub__(self,vector):
  30.         if len(self) != len(vector):
  31.             return None
  32.         lst = [self.vec[i] - vector.vec[i] for i in range(len(self))]
  33.         return Vector(lst)
  34.    
  35.     def __mul__(self,vector):
  36.         if isinstance(vector, Vector):
  37.             if len(self) != len(vector):
  38.                 return None
  39.             return sum([self.vec[i] * vector.vec[i] for i in range(len(self))])
  40.         lst = [self.vec[i] - vector for i in range(len(self))]
  41.         return Vector(lst)
  42.    
  43.     def __rmul__(self,vector):
  44.         return self * vector
  45.    
  46.     def __getitem__(self,i):
  47.         return self.vec[i]
  48.    
  49.     def norm(self):
  50.         vector = self * self
  51.         total = sum(vector.vec)
  52.         return sqrt(total)
  53.    
  54.     def angle(self,vector):
  55.         vect1 = self * vector
  56.         vect2 = self.norm() * vector.norm()
  57.         total = sum(vect1.vec)
  58.         return degrees(acos(total/vect2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement