def segment_triangles_intersection_wrapper(segment, triangle): """ This function wraps ``segment_triangles_intersection()`` to make it compatible with ``segment_triangle_intersection()``. """ res = 0 r = 0.0 s = 0.0 t = 0.0 b = 0.0 itrsct = np.empty(3) # noinspection PyUnusedLocal def callback(seg, triangles, rres, rr, ss, tt, bb, iitrsct): assert len(triangles) == 1 nonlocal res, r, s, t, b, itrsct res = rres r = rr s = ss t = tt b = bb itrsct = iitrsct segment_triangles_intersection(segment, np.array([triangle]), callback) return res, r, s, t, itrsct, b
def test_segment_triangles_intersection_random(): k = 10 n = 100 segments = np.random.rand(k, 2, 3) triangles = np.random.rand(n, 3, 3) for segment in segments: segment_triangles_intersection( segment, triangles, segment_triangles_intersection_validation_callback )
def test_segment_triangles_intersection_quantized_random(): # We apply strong quantization on random value to promote the emergence of degenerate and # parallel segment/face pairs k = 5 n = 1000 segments = np.around(5 * np.random.rand(k, 2, 3)) triangles = np.around(5 * np.random.rand(n, 3, 3)) for segment in segments: segment_triangles_intersection( segment, triangles, segment_triangles_intersection_validation_callback )