Pour obtenir un cadre de délimitation avec un certain angle, faites pivoter le polygone dans le sens contraire. Ensuite, vous pouvez utiliser les coordonnées min/max x/y pour obtenir une boîte englobante simple et la faire pivoter selon l'angle pour obtenir votre résultat final. De votre commentaire, il semble que vous ayez des problèmes pour obtenir le point central du polygone. Le centre d'un polygone doit être la moyenne des sommes de coordonnées de chaque point. Donc, pour les points P1, ..., PN, calculer:
xsum = p1.x + ... + pn.x;
ysum = p1.y + ... + pn.y;
xcenter = xsum/n;
ycenter = ysum/n;
Pour que cela soit complète, j'ajoute aussi quelques formules pour la rotation en cause. Pour faire pivoter un point (x, y) autour d'un point central (cx, cy), procédez comme suit:
// Translate center to (0,0)
xt = x - cx;
yt = y - cy;
// Rotate by angle alpha (make sure to convert alpha to radians if needed)
xr = xt * cos(alpha) - yt * sin(alpha);
yr = xt * sin(alpha) + yt * cos(alpha);
// Translate back to (cx, cy)
result.x = xr + cx;
result.y = yr + cx;
Par "différents angles" voulez-vous dire que le rectangle de délimitation doit être à un certain angle, ou que la forme à l'intérieur doit être à un certain angle? – Welbog
Vous devrez corriger certains angles ici, sinon il y a plusieurs solutions. – Glenn
L'angle du rectangle englobant est ce qui varie. J'ai pensé à faire tourner le polygone dans le sens inverse, puis à ajuster un rectangle autour de celui-ci et à faire pivoter les points du rectangle, mais je pense que je me trompe en identifiant correctement les points centraux. – kevin42