Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.03 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.         lst = [0]*len(self)
  21.         if len(self) != len(vector):
  22.             return None
  23.         else:
  24.             for i in range(0,len(self)):
  25.                 lst[i] = self.vec[i] + vector.vec[i]
  26.         return Vector(lst)
  27.    
  28.     def __neg__(self):
  29.         vector = [0]*len(self)
  30.         for i in range(0,len(self)):
  31.             vector[i] = self.vec[i]*-1
  32.         return Vector(vector)
  33.    
  34.     def __sub__(self,vector):
  35.         lst =[0]*len(self)
  36.         if len(self) != len(vector):
  37.             return None
  38.         else:
  39.             for i in range(0,len(self)):
  40.                 lst[i] = self.vec[i] + -vector.vec[i]
  41.             return Vector(lst)
  42.    
  43.     def __mul__(self,vector):
  44.         lst =[0]*len(self)
  45.         if type(vector) is type(self):
  46.             if len(self) != len(vector):
  47.                 return None
  48.             for i in range(0,len(self)):
  49.                 lst[i] = self.vec[i] * vector.vec[i]
  50.             return sum(lst)
  51.         else:
  52.             for i in range(0,len(self)):
  53.                 lst[i] = self.vec[i] * vector
  54.         return Vector(lst)
  55.    
  56.     def __rmul__(self,vector):
  57.         return self * vector
  58.    
  59.     def __getitem__(self,i):
  60.         return self.vec[i]
  61.    
  62.     def norm(self):
  63.         vector = self * self
  64.         total = 0
  65.         for i in range(0,len(vector)):
  66.             total += vector.vec[i]
  67.         return sqrt(total)
  68.    
  69.     def angle(self,vector):
  70.         vect1 = self * vector
  71.         vect2 = self.norm() * vector.norm()
  72.         total = 0
  73.         for i in range(0, len(vect1)):
  74.             total += vect1.vec[i]
  75.         return degrees(acos(total/vect2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement