2017-08-17 3 views
0

Si j'ai une liste de coordonnées coords = [(7, 354), (307, 339), (304, 296), (4, 311)] pour un rectangle angulaire. Je voudrais être en mesure de convertir ces quatre points en format x,y,w,h,o.convertir quatre coordonnées x, y en centroïde, largeur largeur et orientation (py)

Comment puis-je les convertir en paires de x, y en centroïde, en largeur, en hauteur et en orientation? Le centroïde est facile à calculer, tout comme la largeur et la hauteur. Que diriez-vous de l'orientation? Je recherche idéalement un moyen facile de passer de l'un à l'autre. ex. convert_to_xywho() et 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])) 

Toutes les suggestions sur la façon de trouver l'orientation. Et appliquer une telle orientation à x,y,w,h,o pour obtenir une liste de paires x, y

Remarque: j'utilise le système de coordonnées PyGame dont l'origine est en haut à gauche.

+0

Que signifie "orientation"? –

Répondre

1

L'orientation provient de l'inclinaison d'un segment de ligne.

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

Je suppose que vous pouvez finir à partir de là.