point.py
# not used # last updated 29-Jul-2008 -- dmreagan from vector import Vector2, Vector3 from math import sqrt import sys class Point2: def __init__(self, x = 0.0, y = 0.0): self.e = [float(x), float(y)] self.name = 'Point2' def Set(self, x, y): self.e[0], self.e[1] = x,y def SetX(self, x): self.e[0] = x def SetY(self, y): self.e[1] = y def x(self): return self.e[0] def y(self): return self.e[1] def length(self): return sqrt( self.e[0]*self.e[0] + self.e[1]*self.e[1]) def squaredLength(self): return self.e[0]*self.e[0] + self.e[1]*self.e[1] def MakeUnitVector(self): l = self.length() try: x = self.e[0]/l y = self.e[1]/l except: print 'Error', sys.exc_type, sys.exc_value sys.exit(1) else: self.e[0], self.e[1] = x,y def __getitem__(self, i): return self.e[i] def __setitem__(self, i, val): self.e[i] = val def __add__(self, other): return Point2( self.e[0]+other[0], self.e[1] + other[1]) def __sub__(self, other): if self.name != other.name: return Point2( self.e[0] - other[0], self.e[1] - other[1]) else: return Vector2( self.e[0] - other[0], self.e[1] - other[1]) def __repr__(self): return '%f %f' % (self.e[0], self.e[1]) def __getattr__(self, name): return getattr(self, name) class Point3: def __init__(self, x = 0, y = 0, z = 0): self.e = [float(x), float(y), float(z)] self.name = 'Point3' def Set(self, x, y, z): self.e[0], self.e[1], self.e[2] = x,y,z def SetX(self, x): self.e[0] = x def SetY(self, y): self.e[1] = y def SetZ(self, z): self.e[2] = z def x(self): return self.e[0] def y(self): return self.e[1] def z(self): return self.e[2] def length(self): return sqrt( self.e[0]*self.e[0] + self.e[1]*self.e[1] + self.e[2]*self.e[2]) def squaredLength(self): return self.e[0]*self.e[0] + self.e[1]*self.e[1] + self.e[2]*self.e[2] def MakeUnitVector(self): l = self.length() try: x = self.e[0]/l y = self.e[1]/l z = self.e[2]/l except: print 'Error', sys.exc_type, sys.exc_value sys.exit(1) else: self.e[0], self.e[1], self.e[2] = x,y,z def __getitem__(self, i): return self.e[i] def __setitem__(self, i, val): self.e[i] = val def __add__(self, other): return Point3( self.e[0]+other[0], self.e[1] + other[1], self.e[2]+other[2]) def __sub__(self, other): if self.name != other.name: return Point3( self.e[0] - other[0], self.e[1] - other[1], self.e[2] - other[2]) else: return Vector3( self.e[0] - other[0], self.e[1] - other[1], self.e[2] - other[2]) def __repr__(self): return '%f %f %f' % (self.e[0], self.e[1], self.e[2]) # infinite loop? def __getattr__(self, name): return getattr(self, name) if __name__ == '__main__': from types import * p1 = Point3( 1,0,0) p2 = Point3(0,1,0) v1 = p2 - p1 p3 = p1 + v1 ## print p1 ## print p2 ## print p3 ## print v1 ## print p1.name ## print v1.name
by
AMcneil
—
last modified
Feb 29, 2016 12:25 PM