计算点到线段的距离 python代码
时间: 2023-12-20 09:29:53 浏览: 211
以下是Python代码,用于计算点到线段的距离:
```python
import math
def point_to_segment_distance(x, y, x1, y1, x2, y2):
# 计算线段长度
segment_length = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
# 如果线段长度为0,则点和线段起点重合,距离为点到线段起点的距离
if segment_length == 0:
return math.sqrt((x - x1) ** 2 + (y - y1) ** 2)
# 计算点到线段起点的向量
point_vector = [(x - x1), (y - y1)]
# 计算线段方向的向量
segment_vector = [(x2 - x1), (y2 - y1)]
# 计算点到线段起点的向量在线段方向上的投影长度
projection_length = (point_vector[0] * segment_vector[0] + point_vector[1] * segment_vector[1]) / segment_length
# 如果投影长度小于0,则点到线段起点的距离为点到线段起点的距离
if projection_length < 0:
return math.sqrt((x - x1) ** 2 + (y - y1) ** 2)
# 如果投影长度大于线段长度,则点到线段终点的距离为点到线段终点的距离
if projection_length > segment_length:
return math.sqrt((x - x2) ** 2 + (y - y2) ** 2)
# 计算点到线段的距离
distance = abs((y2 - y1) * x - (x2 - x1) * y + x2 * y1 - y2 * x1) / segment_length
return distance
```
阅读全文