将四个x,y坐标转换为质心,宽度高度和方向(py)

时间:2017-08-17 00:17:45

标签: python pygame geometry

如果我有一个角度矩形的坐标coords = [(7, 354), (307, 339), (304, 296), (4, 311)]列表。我希望能够将这四个点转换为x,y,w,h,o格式。

如何将x,y对的这些转换为质心,宽度,高度和方向?质心易于计算,宽度和高度也很容易计算。方向怎么样?

我理想地寻找一种在两者之间切换的简单方法。恩。 convert_to_xywho()convert_to_xy_list()

p1, p2 = end[:2]
p3, p4 = end[2:]
w = math.hypot(p2[0] - p1[0], p2[1] - p1[1])
h = math.hypot(p3[0] - p2[0], p3[1] - p2[1])
c = [[p1[0], p2[0], p3[0], p4[0]], [p1[1], p2[1], p3[1], p4[1]]]
centroide = (sum(c[0])/len(c[0]),sum(c[1])/len(c[1]))

有关如何查找方向的任何建议。并将此方向应用于x,y,w,h,o以获取x,y对的列表

注意:我正在使用PyGame坐标系,其原点位于左上角。

1 个答案:

答案 0 :(得分:1)

方向来自一个线段的倾斜。

tan(theta) = (y2-y1) / (x2-x1)

我怀疑你可以从那里完成。