Esempio n. 1
0
    def test_area(self):
        A = Point3D(0, 0, 2)
        B = Point3D(0, 1, 2)
        C = Point3D(1, 0, 2)

        triangle = Triangle3D(A, B, C)
        self.assertEqual(triangle.area, 0.5)
Esempio n. 2
0
    def test_triangle_and_segment_are_parallel(self):
        A = Point3D(0, 0, 0)
        B = Point3D(1, 0, 0)
        C = Point3D(0, 1, 0)
        triangle = Triangle3D(A, B, C)

        S = Point3D(0., 0.5, 1)
        T = Point3D(0.5, 0., 1)
        segment = Segment3D(S, T)

        with self.assertRaisesRegex(ValueError, 'There is no intersection'):
            intersec3d_triangle_segment(triangle, segment)
Esempio n. 3
0
    def test_no_intersection(self):
        A = Point3D(0, 0, 0)
        B = Point3D(1, 0, 0)
        C = Point3D(0, 1, 0)
        triangle = Triangle3D(A, B, C)

        S = Point3D(0.25, 0.25, -1)
        T = Point3D(0.25, 0.25, -0.5)
        segment = Segment3D(S, T)

        with self.assertRaisesRegex(ValueError, 'There is no intersection'):
            intersec3d_triangle_segment(triangle, segment)
Esempio n. 4
0
    def test_normal(self):

        A = Point3D(3, 0, 0)
        B = Point3D(0, 6, 0)
        C = Point3D(0, 0, 9)

        triangle = Triangle3D(A, B, C)

        E = triangle.center

        self.assertAlmostEqual(E.x, 1.)
        self.assertAlmostEqual(E.y, 2.)
        self.assertAlmostEqual(E.z, 3.)
Esempio n. 5
0
    def test_symetric_point(self):
        A = Point3D(0, 0, 0)
        B = Point3D(0, 1, 0)
        C = Point3D(1, 0, 0)
        triangle = Triangle3D(A, B, C)

        P = Point3D(1, 2, -3)

        S = triangle.symetric_point(P)

        self.assertEqual(S.x, 1)
        self.assertEqual(S.y, 2)
        self.assertEqual(S.z, 3)
Esempio n. 6
0
    def test_triangle_and_segment_are_in_same_plane(self):
        A = Point3D(0, 0, 0)
        B = Point3D(1, 0, 0)
        C = Point3D(0, 1, 0)
        triangle = Triangle3D(A, B, C)

        S = Point3D(0., 0.5, 0)
        T = Point3D(0.5, 0., 0)
        segment = Segment3D(S, T)

        msg = 'Triangle and segment are in the same plane'
        with self.assertRaisesRegex(ValueError, msg):
            intersec3d_triangle_segment(triangle, segment)
Esempio n. 7
0
    def test_triangle_is_a_point(self):
        A = Point3D(0, 0, 0)
        B = Point3D(0, 0, 0)
        C = Point3D(0, 0, 0)
        triangle = Triangle3D(A, B, C)

        S = Point3D(0.25, 0.25, -1)
        T = Point3D(0.25, 0.25, 1)
        segment = Segment3D(S, T)

        msg = 'Triangle is degenerated \(a segment or point\)'
        with self.assertRaisesRegex(ValueError, msg):
            intersec3d_triangle_segment(triangle, segment)
Esempio n. 8
0
    def test_create_triangle(self):
        A = Point3D(0, 0, 0)
        B = Point3D(0, 1, 0)
        C = Point3D(1, 0, 0)

        triangle = Triangle3D(A, B, C)
        self.assertEqual(triangle.B.y, 1)

        # Change coordiante.
        triangle.B.y = 3
        self.assertEqual(triangle.B.y, 3)

        # Change point.
        triangle.B = Point3D(-1, -2, -3)
        self.assertEqual(triangle.B.y, -2)
Esempio n. 9
0
    def test_intersection_in_triangle(self):
        """
        C      T       y ^
        |  - /           | z
        |   I   -        |/
        A--/--------B    +-----> x
          S
        """

        A = Point3D(0, 0, 0)
        B = Point3D(1, 0, 0)
        C = Point3D(0, 1, 0)
        triangle = Triangle3D(A, B, C)

        S = Point3D(0.25, 0.25, -1)
        T = Point3D(0.25, 0.25, 1)
        segment = Segment3D(S, T)

        I = intersec3d_triangle_segment(triangle, segment)

        self.assertEqual(I.x, 0.25)
        self.assertEqual(I.y, 0.25)
        self.assertEqual(I.z, 0.)
Esempio n. 10
0
    def setUp(self):
        self.A = Point3D(1, 1, 2)
        self.B = Point3D(6, 0, 1)
        self.C = Point3D(7, 3, 3)

        self.T = Triangle3D(self.A, self.B, self.C)