示例#1
0
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
示例#2
0
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
        )
示例#3
0
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
        )