def is_point_on_segment_xy(point, segment, tol=0.0): """Determine if a point lies on a given line segment in the XY-plane. Parameters ---------- point : sequence of float XY(Z) coordinates of a point. segment : tuple, list XY(Z) coordinates of two points defining a segment. Returns ------- bool ``True`` if the point is on the line segment. ``False`` otherwise. """ a, b = segment if not is_point_on_line_xy(point, segment, tol=tol): return False d_ab = distance_point_point_xy(a, b) if d_ab == 0: return False d_pa = distance_point_point_xy(a, point) d_pb = distance_point_point_xy(b, point) if d_pa + d_pb <= d_ab + tol: return True return False
def is_point_on_polyline_xy(point, polyline, tol=0.0): """Determine if a point is on a polyline in the XY plane. Parameters ---------- point : sequence of float XY(Z) coordinates. polyline : sequence of sequence of float XY(Z) coordinates of the points of the polyline. tol : float, optional The tolerance. Default is ``0.0``. Returns ------- bool ``True`` if the point is on the polyline. ``False`` otherwise. """ for i in range(len(polyline) - 1): a = polyline[i] b = polyline[i + 1] c = closest_point_on_segment_xy(point, (a, b)) if distance_point_point_xy(point, c) <= tol: return True return False
def is_point_on_segment_xy(point, segment, tol=1e-6): """Determine if a point lies on a given line segment on the XY-plane. Parameters ---------- point : sequence of float XY(Z) coordinates of a point. segment : tuple, list XY(Z) coordinates of two points defining a segment. tol : float, optional A tolerance for membership verification. Default is ``1e-6``. Returns ------- bool ``True`` if the point is on the line segment. ``False`` otherwise. """ a, b = segment if not is_point_on_line_xy(point, segment, tol=tol): return False d_ab = distance_point_point_xy(a, b) if d_ab == 0: return False d_pa = distance_point_point_xy(a, point) d_pb = distance_point_point_xy(b, point) if d_pa + d_pb <= d_ab + tol: return True return False
def is_point_in_circle_xy(point, circle): """Determine if a point lies in a circle lying in the XY plane. Parameters: point (sequence of float): XY(Z) coordinates of a 2D or 3D point (Z will be ignored). circle (tuple): center, radius of the circle in the xy plane. Returns: (bool): True if the point lies in the circle, False otherwise. """ dis = distance_point_point_xy(point, circle[0]) if dis <= circle[1]: return True return False
def is_point_in_circle_xy(point, circle): """Determine if a point lies in a circle lying on the XY-plane. Parameters ---------- point : sequence of float XY(Z) coordinates of a 2D or 3D point (Z will be ignored). circle : tuple center, radius of the circle on the xy plane. Returns ------- bool ``True`` if the point lies in the circle. ``False`` otherwise. """ dis = distance_point_point_xy(point, circle[0]) if dis <= circle[1]: return True return False