使用点使用对边的中点绘制矩形

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 方法

照常绘制所有线条