예제 #1
0
 def __sub__(self, other):
     res = super().__sub__(other)
     if res.isPoint():
         return Point.new(res)
     elif res.isVector():
         return Vector.new(res)
     else:
         raise TypeError
예제 #2
0
 def test_cross_product(self):
     a = Vector(1, 2, 3)
     b = Vector(2, 3, 4)
     self.assertEqual(a.cross(b) == Vector(-1, 2, -1), True)
     self.assertEqual(b.cross(a) == Vector(1, -2, 1), True)
예제 #3
0
 def test_dot_product(self):
     a = Vector(1, 2, 3)
     b = Vector(2, 3, 4)
     self.assertEqual(a.dot(b) == 20, True)
예제 #4
0
    def test_normalization(self):
        v = Vector(4, 0, 0)
        self.assertEqual(v.normalize() == Vector(1, 0, 0), True)

        v = Vector(1, 2, 3)
        self.assertEqual(
            # vector(1/√14, 2/√14, 3/√14)
            v.normalize() == Vector(0.26726, 0.53452, 0.80178),
            True)

        # magnitude of a normalized vector equals 1
        v = Vector(1, 2, 3)
        n = v.normalize()
        self.assertEqual(n.magnitude() == 1, True)
예제 #5
0
    def test_vector_magnitude(self):
        v = Vector(1, 0, 0)
        self.assertEqual(Tuple.float_eq(v.magnitude(), 1), True)

        v = Vector(0, 1, 0)
        self.assertEqual(Tuple.float_eq(v.magnitude(), 1), True)

        v = Vector(1, 2, 3)
        self.assertEqual(Tuple.float_eq(v.magnitude(), math.sqrt(14)), True)

        v = Vector(-1, -2, -3)
        self.assertEqual(Tuple.float_eq(v.magnitude(), math.sqrt(14)), True)
예제 #6
0
 def test_subtract_vector_from_vector(self):
     v1 = Vector(3, 2, 1)
     v2 = Vector(5, 6, 7)
     self.assertEqual(v1 - v2 == Vector(-2, -4, -6), True)
예제 #7
0
 def test_vector_creates_tuple_wth_w_equals_0(self):
     v = Vector(4, -4, 3)
     self.assertEqual(v == Tuple(4, -4, 3, 0), True)
예제 #8
0
 def test_subtract_vector_from_point(self):
     p = Point(3, 2, 1)
     v = Vector(5, 6, 7)
     self.assertEqual(p - v == Point(-2, -4, -6), True)
예제 #9
0
 def test_subtract_two_points(self):
     p1 = Point(3, 2, 1)
     p2 = Point(5, 6, 7)
     self.assertEqual(p1 - p2 == Vector(-2, -4, -6), True)