使用点使用对边的中点绘制矩形
draw a rectangle using points using mid points of opposite sides
使用 upper_left 和 bottom_right 绘制矩形很常见,但我只有宽度边的中点。
这看起来可行,因为它与 x 轴完美对齐,但我不确定当这两个坐标成一定角度时如何实现。
我试图获取 upper_left 和 bottom_right 坐标,但以一定角度计算它们是一个挑战
这是我获得四个角的方法:
def get_corners(point1,point2,width):
# width /= 2
m1 = (point1[1]-point2[1])/(point1[0]-point2[0])
m2 = -1/m1
cor_x = math.sqrt((width/2)**2 / (m2**2 + 1))
cor_y = math.sqrt((width/2)**2 / (m2**-2 + 1))
if m2 >= 0:
corner1 = (point1[0] + cor_x, point1[1] + cor_y)
corner2 = (point1[0] - cor_x, point1[1] - cor_y)
corner3 = (point2[0] + cor_x, point2[1] + cor_y)
corner4 = (point2[0] - cor_x, point2[1] - cor_y)
else:
corner1 = (point1[0] - cor_x, point1[1] + cor_y)
corner2 = (point1[0] + cor_x, point1[1] - cor_y)
corner3 = (point2[0] - cor_x, point2[1] + cor_y)
corner4 = (point2[0] + cor_x, point2[1] - cor_y)
return corner1, corner2, corner3, corner4
print(get_corners((4,8),(-4,-8),math.sqrt(80)))
结果:
((0.0, 10.0), (8.0, 6.0), (-8.0, -6.0), (0.0, -10.0))
对应于:
rectangle used
之后,只需根据您的 upper_left/ bottom_right 方法
照常绘制所有线条
使用 upper_left 和 bottom_right 绘制矩形很常见,但我只有宽度边的中点。
这看起来可行,因为它与 x 轴完美对齐,但我不确定当这两个坐标成一定角度时如何实现。
我试图获取 upper_left 和 bottom_right 坐标,但以一定角度计算它们是一个挑战
这是我获得四个角的方法:
def get_corners(point1,point2,width):
# width /= 2
m1 = (point1[1]-point2[1])/(point1[0]-point2[0])
m2 = -1/m1
cor_x = math.sqrt((width/2)**2 / (m2**2 + 1))
cor_y = math.sqrt((width/2)**2 / (m2**-2 + 1))
if m2 >= 0:
corner1 = (point1[0] + cor_x, point1[1] + cor_y)
corner2 = (point1[0] - cor_x, point1[1] - cor_y)
corner3 = (point2[0] + cor_x, point2[1] + cor_y)
corner4 = (point2[0] - cor_x, point2[1] - cor_y)
else:
corner1 = (point1[0] - cor_x, point1[1] + cor_y)
corner2 = (point1[0] + cor_x, point1[1] - cor_y)
corner3 = (point2[0] - cor_x, point2[1] + cor_y)
corner4 = (point2[0] + cor_x, point2[1] - cor_y)
return corner1, corner2, corner3, corner4
print(get_corners((4,8),(-4,-8),math.sqrt(80)))
结果:
((0.0, 10.0), (8.0, 6.0), (-8.0, -6.0), (0.0, -10.0))
对应于:
rectangle used
之后,只需根据您的 upper_left/ bottom_right 方法