示例#1
0
    def distance_and_point(self, point: Point, squared: bool = False) \
            -> Tuple[float, Point]:
        """Calculate smallest distance from the way to a point.

        Returns the smallest distance and the closest point in a tuple.
        """
        result, closest = min((point.distance_to_segment(p, v, squared=True)
                               for p, v in zip(self.points(), self.vectors())),
                              key=itemgetter(0))
        return (result if squared else sqrt(result), closest)
示例#2
0
 def distance(self, point: Point, squared: bool = False) -> float:
     """Calculate smallest distance from the way to a point."""
     result, _ = min((point.distance_to_segment(p, v, squared=True)
                      for p, v in zip(self.points(), self.vectors())),
                     key=itemgetter(0))
     return result if squared else sqrt(result)