2 The util3d module a vector class to work with 3D points. All the basic math operators have been overloaded to work on this object.
3 This module is deprecated and only used by the SplitModels function.
5 Use numpy arrays instead to work with vectors.
7 __copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License"
11 class Vector3(object):
12 """ 3D vector object. """
13 def __init__(self, x=0.0, y=0.0, z=0.0):
14 """Create a new 3D vector"""
20 return Vector3(self.x, self.y, self.z)
23 return Vector3(self.x, self.y, self.z)
26 return 'V[%s, %s, %s]' % ( self.x, self.y, self.z )
29 return Vector3( self.x + v.x, self.y + v.y, self.z + v.z )
32 return Vector3( self.x - v.x, self.y - v.y, self.z - v.z )
35 return Vector3( self.x * v, self.y * v, self.z * v )
38 return Vector3( self.x / v, self.y / v, self.z / v )
42 return Vector3( - self.x, - self.y, - self.z )
44 def __iadd__(self, v):
50 def __isub__(self, v):
56 def __imul__(self, v):
62 def __idiv__(self, v):
68 def almostEqual(self, v):
69 return (abs(self.x - v.x) + abs(self.y - v.y) + abs(self.z - v.z)) < 0.00001
72 return Vector3(self.y * v.z - self.z * v.y, -self.x * v.z + self.z * v.x, self.x * v.y - self.y * v.x)
75 return math.sqrt( self.x * self.x + self.y * self.y + self.z * self.z )
85 return Vector3(min(self.x, v.x), min(self.y, v.y), min(self.z, v.z))
88 return Vector3(max(self.x, v.x), max(self.y, v.y), max(self.z, v.z))