Ejemplo n.º 1
0
 def test___eq__(self):
     """
     """
     self.assertTrue(self.v == Vector(1, 2, 3))
     self.assertTrue(self.v == (1, 2, 3))
     self.assertTrue(self.v != Vector(1, 2, 4))
     self.assertTrue(self.v == Vector(1, 2, 3.00000000001))
     self.assertTrue(self.v != Vector(1, 2, 3.00000000010))
Ejemplo n.º 2
0
 def test___mul__2(self):
     """
     """
     v1 = Vector(1, 2, 3)
     v2 = Vector(4, 5, 6)
     self.assertEqual(v1 * v2, 1 * 4 + 2 * 5 + 3 * 6)
     self.assertEqual(
         v1 * v2,
         v1.magnitude * v2.magnitude * np.cos(np.radians(v1.get_angle(v2))))
Ejemplo n.º 3
0
 def test___matmul__(self):
     """
     """
     v1 = Vector(1, 2, 3)
     v2 = Vector(4, 5, 6)
     v = v1 @ v2
     self.assertTrue(
         abs(v.magnitude -
             (v1.magnitude * v2.magnitude *
              np.sin(np.radians(v1.get_angle(v2))))) < 10**-PRECISION)
Ejemplo n.º 4
0
 def test_unit(self):
     """
     """
     u = self.v.unit
     self.assertEqual(u.get_angle(self.v), 0)
     self.assertEqual(u.magnitude, 1)
     self.assertEqual(Vector(0, 0, 0).unit, None)
Ejemplo n.º 5
0
 def test_translate2(self):
     """
     """
     p = Point(1, 2, 3)
     v = Vector(*(2, 4, 6))
     p = p.translate(v)
     self.assertEqual(p.x, 3)
     self.assertEqual(p.y, 6)
     self.assertEqual(p.z, 9)
Ejemplo n.º 6
0
 def test___truediv__(self):
     """
     """
     v1 = Vector(1.5, 3, 4.5)
     v2 = v1 / 3
     self.assertEqual(v2.x, 0.5)
     self.assertEqual(v2.y, 1.0)
     self.assertEqual(v2.z, 1.5)
     self.assertEqual(v2.magnitude, v1.magnitude / 3)
Ejemplo n.º 7
0
 def test___mul__1(self):
     """
     """
     v1 = Vector(1, 2, 3)
     v2 = v1 * 3
     self.assertEqual(v2.x, 3)
     self.assertEqual(v2.y, 6)
     self.assertEqual(v2.z, 9)
     self.assertEqual(v2.magnitude, v1.magnitude * 3)
Ejemplo n.º 8
0
    def test___sub__(self):
        """
        """
        v = self.v - Vector(3, 2, 1)
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, -2)
        self.assertEqual(v.y, 0)
        self.assertEqual(v.z, 2)

        v = self.v - (3, 2, 1)
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, -2)
        self.assertEqual(v.y, 0)
        self.assertEqual(v.z, 2)
Ejemplo n.º 9
0
    def test___add__(self):
        """
        """
        v = self.v + Vector(1, 2, 3)
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, 2)
        self.assertEqual(v.y, 4)
        self.assertEqual(v.z, 6)

        v = self.v + (1, 2, 3)
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, 2)
        self.assertEqual(v.y, 4)
        self.assertEqual(v.z, 6)
Ejemplo n.º 10
0
    def test_angle(self):
        """
        """
        v1 = Vector(1, 0, 0)
        v2 = Vector(0, 1, 0)
        self.assertTrue(abs(v1.get_angle(v2) - 90) < 10**-PRECISION)
        v1 = Vector(1, 0, 0)
        v2 = Vector(2, 0, 0)
        self.assertTrue(abs(v1.get_angle(v2) - 0) < 10**-PRECISION)
        v1 = Vector(1, 0, 0)
        v2 = Vector(1, 1, 0)
        self.assertTrue(abs(v1.get_angle(v2) - 45) < 10**-PRECISION)

        a = Vector(0, 0, 0).get_angle((1, 1, 1))
        self.assertEqual(a, None)
        a = Vector(1, 1, 1).get_angle((0, 0, 0))
        self.assertEqual(a, None)
Ejemplo n.º 11
0
 def test_magnitude(self):
     """
     """
     m = Vector(1, 1, 1).magnitude
     self.assertTrue(is_number(m))
     self.assertEqual(m, np.sqrt(3))
Ejemplo n.º 12
0
class TestVector(unittest.TestCase):
    """
    """

    v = Vector(1, 2, 3)

    def test_properties(self):
        """
        """
        self.assertEqual(self.v.x, 1)
        self.assertEqual(self.v.y, 2)
        self.assertEqual(self.v.z, 3)

    def test___getitem__(self):
        """
        """
        x, y, z = self.v
        self.assertEqual(x, 1)
        self.assertEqual(y, 2)
        self.assertEqual(z, 3)

    def test___eq__(self):
        """
        """
        self.assertTrue(self.v == Vector(1, 2, 3))
        self.assertTrue(self.v == (1, 2, 3))
        self.assertTrue(self.v != Vector(1, 2, 4))
        self.assertTrue(self.v == Vector(1, 2, 3.00000000001))
        self.assertTrue(self.v != Vector(1, 2, 3.00000000010))

    def test___add__(self):
        """
        """
        v = self.v + Vector(1, 2, 3)
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, 2)
        self.assertEqual(v.y, 4)
        self.assertEqual(v.z, 6)

        v = self.v + (1, 2, 3)
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, 2)
        self.assertEqual(v.y, 4)
        self.assertEqual(v.z, 6)

    def test___sub__(self):
        """
        """
        v = self.v - Vector(3, 2, 1)
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, -2)
        self.assertEqual(v.y, 0)
        self.assertEqual(v.z, 2)

        v = self.v - (3, 2, 1)
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, -2)
        self.assertEqual(v.y, 0)
        self.assertEqual(v.z, 2)

    def test___mul__1(self):
        """
        """
        v1 = Vector(1, 2, 3)
        v2 = v1 * 3
        self.assertEqual(v2.x, 3)
        self.assertEqual(v2.y, 6)
        self.assertEqual(v2.z, 9)
        self.assertEqual(v2.magnitude, v1.magnitude * 3)

    def test___mul__2(self):
        """
        """
        v1 = Vector(1, 2, 3)
        v2 = Vector(4, 5, 6)
        self.assertEqual(v1 * v2, 1 * 4 + 2 * 5 + 3 * 6)
        self.assertEqual(
            v1 * v2,
            v1.magnitude * v2.magnitude * np.cos(np.radians(v1.get_angle(v2))))

    def test___truediv__(self):
        """
        """
        v1 = Vector(1.5, 3, 4.5)
        v2 = v1 / 3
        self.assertEqual(v2.x, 0.5)
        self.assertEqual(v2.y, 1.0)
        self.assertEqual(v2.z, 1.5)
        self.assertEqual(v2.magnitude, v1.magnitude / 3)

    def test___matmul__(self):
        """
        """
        v1 = Vector(1, 2, 3)
        v2 = Vector(4, 5, 6)
        v = v1 @ v2
        self.assertTrue(
            abs(v.magnitude -
                (v1.magnitude * v2.magnitude *
                 np.sin(np.radians(v1.get_angle(v2))))) < 10**-PRECISION)

    def test___pos__(self):
        """
        """
        v = +self.v
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, +self.v.x)
        self.assertEqual(v.y, +self.v.y)
        self.assertEqual(v.z, +self.v.z)

    def test___neg__(self):
        """
        """
        v = -self.v
        self.assertEqual(type(v), Vector)
        self.assertEqual(v.x, -self.v.x)
        self.assertEqual(v.y, -self.v.y)
        self.assertEqual(v.z, -self.v.z)

    def test_row(self):
        """
        """
        m = self.v.row
        self.assertEqual(type(m), Matrix)
        self.assertEqual(m.order, (1, 3))

    def test_col(self):
        """
        """
        m = self.v.col
        self.assertEqual(type(m), Matrix)
        self.assertEqual(m.order, (3, 1))

    def test_magnitude(self):
        """
        """
        m = Vector(1, 1, 1).magnitude
        self.assertTrue(is_number(m))
        self.assertEqual(m, np.sqrt(3))

    def test_unit(self):
        """
        """
        u = self.v.unit
        self.assertEqual(u.get_angle(self.v), 0)
        self.assertEqual(u.magnitude, 1)
        self.assertEqual(Vector(0, 0, 0).unit, None)

    def test_rotate(self):
        """
        """
        v = self.v.rotate(RotationMatrix.from_basic_rotations(z=180))
        self.assertEqual(v.x, -1)
        self.assertEqual(v.y, -2)
        self.assertEqual(v.z, +3)

    def test_angle(self):
        """
        """
        v1 = Vector(1, 0, 0)
        v2 = Vector(0, 1, 0)
        self.assertTrue(abs(v1.get_angle(v2) - 90) < 10**-PRECISION)
        v1 = Vector(1, 0, 0)
        v2 = Vector(2, 0, 0)
        self.assertTrue(abs(v1.get_angle(v2) - 0) < 10**-PRECISION)
        v1 = Vector(1, 0, 0)
        v2 = Vector(1, 1, 0)
        self.assertTrue(abs(v1.get_angle(v2) - 45) < 10**-PRECISION)

        a = Vector(0, 0, 0).get_angle((1, 1, 1))
        self.assertEqual(a, None)
        a = Vector(1, 1, 1).get_angle((0, 0, 0))
        self.assertEqual(a, None)