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):
- lst = [0]*len(self)
- if len(self) != len(vector):
- return None
- else:
- for i in range(0,len(self)):
- lst[i] = self.vec[i] + vector.vec[i]
- return Vector(lst)
- def __neg__(self):
- vector = [0]*len(self)
- for i in range(0,len(self)):
- vector[i] = self.vec[i]*-1
- return Vector(vector)
- def __sub__(self,vector):
- lst =[0]*len(self)
- if len(self) != len(vector):
- return None
- else:
- for i in range(0,len(self)):
- lst[i] = self.vec[i] + -vector.vec[i]
- return Vector(lst)
- def __mul__(self,vector):
- lst =[0]*len(self)
- if type(vector) is type(self):
- if len(self) != len(vector):
- return None
- for i in range(0,len(self)):
- lst[i] = self.vec[i] * vector.vec[i]
- return sum(lst)
- else:
- for i in range(0,len(self)):
- lst[i] = self.vec[i] * vector
- 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 = 0
- for i in range(0,len(vector)):
- total += vector.vec[i]
- return sqrt(total)
- def angle(self,vector):
- vect1 = self * vector
- vect2 = self.norm() * vector.norm()
- total = 0
- for i in range(0, len(vect1)):
- total += vect1.vec[i]
- return degrees(acos(total/vect2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement