polliwog icon indicating copy to clipboard operation
polliwog copied to clipboard

Add `point_nearest_to_line()` function

Open paulmelnikow opened this issue 3 years ago • 0 comments

e.g.

def point_nearest_to_line(
    reference_point_of_line,
    vector_along_line,
    query_points,
    ret_index=False,
):
    from polliwog.line import project_point_to_line

    vg.shape.check(locals(), "reference_point_of_line", (3,))
    vg.shape.check(locals(), "vector_along_line", (3,))
    vg.shape.check(locals(), "query_points", (-1, 3))

    projected = project_point_to_line(
        points=query_points,
        reference_points_of_lines=reference_point_of_line,
        vectors_along_lines=vector_along_line,
    )
    distances = vg.euclidean_distance(projected, query_points)
    closest_index = np.argmin(distances)
    closest = query_points[closest_index]
    return (closest, closest_index) if ret_index else closest

paulmelnikow avatar Dec 14 '21 21:12 paulmelnikow