''' Created on April 15, 2015 @author: Brett Paufler Copyright Brett Paufler two dimensional vector Class with helper functions ''' import numpy as np def vec_len(v): return np.linalg.norm(v) def vec_unit(v): if vec_len(v) == 0: return 0 else: return np.array(v) / vec_len(v) def vec_angle(v1,v2): return np.arccos(np.clip(np.dot(v1.unit,v2.unit), -1, 1)) class Vector(): def __init__(self, x=0.0, y=0.0): self.x = x self.y = y self.a = np.array([self.x,self.y], dtype=float) self.unit = vec_unit(self.a) self.len = vec_len(self.a) def angle(self, v2): return vec_angle(self, v2) def __repr__(self): return str(self.a) v1 = Vector(0,0) v2 = Vector(1,1) ''' for v in [v1, v2]: print v print v.len print vec_len(v.a) print v.unit, vec_unit(v.a) '''