# 计算2个点之间的距离
def calculate_distance(X1, Y1, X2, Y2):
return math.sqrt((X2 - X1)**2 + (Y2 - Y1)**2)
# 获得控制框上的某个点坐标,这个点坐标和任意一个点的距离是最近的
def closest_point_on_rectangle(bx1, by1, bx2, by2, x2, y2):
# 将所有输入转换为浮点数
bx1, by1, bx2, by2, x2, y2 = map(float, [bx1, by1, bx2, by2, x2, y2])
# 分别计算点D到矩形框B的水平和垂直最短距离
if bx1 <= x2 <= bx2:
# 点D在矩形的水平范围内,水平坐标保持不变
x_closest = x2
else:
# 点D在矩形水平范围外,水平坐标取矩形的左边或右边
x_closest = bx1 if x2 < bx1 else bx2
if by1 <= y2 <= by2:
# 点D在矩形的垂直范围内,垂直坐标保持不变
y_closest = y2
else:
# 点D在矩形垂直范围外,垂直坐标取矩形的上边或下边
y_closest = by1 if y2 < by1 else by2
return (x_closest, y_closest)
Posted in自动化