예제 #1
0
        def testfilter(triangle):
            orifice_center = Ray.up.endpoint.coordinates
            orifice_diameter = self.orifice_diameter

            vertex_a = triangle.a.endpoint.coordinates
            vertex_b = triangle.b.endpoint.coordinates
            vertex_c = triangle.c.endpoint.coordinates

            a_length = vector_distance(vertex_a, orifice_center)
            b_length = vector_distance(vertex_b, orifice_center)
            c_length = vector_distance(vertex_c, orifice_center)

            farthest_distance = max(a_length, b_length, c_length)
            closest_distance = min(a_length, b_length, c_length)

            if farthest_distance <= orifice_diameter:
                return TriangleClassification.Accept
            elif triangle.diameter < 0.01 or closest_distance >= orifice_diameter:
                return TriangleClassification.Reject
            else:
                return TriangleClassification.Refine
예제 #2
0
 def then_wavefront_points_up(self):
     actual_direction = self.wavefront.central_direction.normalized()
     expected_direction = Direction.up
     disparity = vector_distance(actual_direction.xyz, expected_direction.xyz)
     self.assertLess(disparity, 0.00000001)
예제 #3
0
 def test_vector_distance(self):
     expect_square = 5.0
     expect = sqrt(expect_square)
     self.assertAlmostEqual(expect, vector_distance((11.0, 22.0), (10.0, 20.0)))
     self.assertAlmostEqual(expect_square, vector_distance_squared((11.0, 22.0), (10.0, 20.0)))