implement Vector operators __add__, __sub__, __mul__, __truediv__

This commit is contained in:
Justin Buchanan
2018-11-18 21:33:17 -08:00
parent 7ac64a7280
commit 3c3837fef3
2 changed files with 25 additions and 0 deletions

View File

@ -80,13 +80,25 @@ class Vector(object):
def sub(self, v): def sub(self, v):
return Vector(self.wrapped.Subtracted(v.wrapped)) return Vector(self.wrapped.Subtracted(v.wrapped))
def __sub__(self, v):
return self.sub(v)
def add(self, v): def add(self, v):
return Vector(self.wrapped.Added(v.wrapped)) return Vector(self.wrapped.Added(v.wrapped))
def __add__(self, v):
return self.add(v)
def multiply(self, scale): def multiply(self, scale):
"""Return a copy multiplied by the provided scalar""" """Return a copy multiplied by the provided scalar"""
return Vector(self.wrapped.Multiplied(scale)) return Vector(self.wrapped.Multiplied(scale))
def __mul__(self, scale):
return self.multiply(scale)
def __truediv__(self, denom):
return self.multiply(1.0 / denom)
def normalized(self): def normalized(self):
"""Return a normalized version of this vector""" """Return a normalized version of this vector"""
return Vector(self.wrapped.Normalized()) return Vector(self.wrapped.Normalized())

View File

@ -108,6 +108,19 @@ class TestCadObjects(BaseTest):
result = Vector(1, 2, 0) + Vector(0, 0, 3) result = Vector(1, 2, 0) + Vector(0, 0, 3)
self.assertTupleAlmostEquals((1.0, 2.0, 3.0), result.toTuple(), 3) self.assertTupleAlmostEquals((1.0, 2.0, 3.0), result.toTuple(), 3)
def testVectorOperators(self):
result = Vector(1, 1, 1) + Vector(2, 2, 2)
self.assertEqual(Vector(3, 3, 3), result)
result = Vector(1, 2, 3) - Vector(3, 2, 1)
self.assertEqual(Vector(-2, 0, 2), result)
result = Vector(1, 2, 3) * 2
self.assertEqual(Vector(2, 4, 6), result)
result = Vector(2, 4, 6) / 2
self.assertEqual(Vector(1, 2, 3), result)
def testVectorEquals(self): def testVectorEquals(self):
a = Vector(1, 2, 3) a = Vector(1, 2, 3)
b = Vector(1, 2, 3) b = Vector(1, 2, 3)