2017-01-18 2 views
0

J'ai un polygone dont les sommets sont les points centraux des 4 autres polygones. Pour ces 4 polygones j'ai aussi les coordonnées de leurs sommets. Je voudrais déterminer pour chaque "polygone d'angle" le sommet qui, s'il était choisi comme sommet du plus grand polygone, maximiserait sa surface. Le polygone est un rectangle auquel on a appliqué une transformation de perspective, donc je pensais que c'était un trapèze.Déterminez les points qui maximisent la surface d'un polygone s'il est choisi comme sommets.

polygon

I ont essayé le calcul d'un centre brut en additionnant les (x, y) s des coins et la plongée par 4. Je puis choisi chaque sommet sur la base de celui qui avait distance la plus éloignée à partir de ce point central parmi ses pairs. (quelque chose comme distance = (Xc - X)^2 + (Yc - Y)^2, j'ai évité l'enracinement carré du résultat à des fins de performance).

Malheureusement, cela ne donne pas les résultats escomptés. Habituellement, un seul sommet est remplacé par le sommet le plus extérieur du «polygone d'angle», tandis que les autres sont remplacés par l'un des deux autres sommets du «polygone d'angle», à l'exclusion du plus proche.

Qu'est-ce qui pourrait être un moyen de créer un meilleur algorithme?

+0

L'approche décrite devrait donner un résultat correct dans la plupart des cas non dégénérés. Peut-être que les erreurs de mise en œuvre entraînent des erreurs de détermination – MBo

+0

Si vous voulez dire que le vertex a la plus grande distance entre les quatre sommets d'un polygone de coin, c'est certainement un mauvais choix, car le polygone peut librement tourner sans changer la sélection et il n'y a aucune influence des autres coins. –

Répondre

0

Une première approche est juste par la force brute: comparez les zones des 4^4 = 256 polygones obtenus par des combinaisons.

Légèrement meilleur, je suppose que les sommets doivent appartenir à la coque convexe de l'ensemble de points (doit être confirmée). Ensuite, jetez les points intérieurs et forcez les restants. Entre un et trois sommets des quadrilatères de coin sont sur la coque convexe, il y a au pire 3^4 = 81 combinaisons (et au mieux un seul, quatre dans l'exemple donné, 2^4 = 16 est le plus probable dans la pratique).

enter image description here

Vous aurez besoin d'un algorithme de coque convexe efficace pour les économies soient efficaces.

0

La méthode que j'ai affichée fonctionne réellement, car @MBo a suggéré qu'il y avait des erreurs de mise en œuvre. Pour spécifier pour les futurs lecteurs, cet algorithme ne fonctionne probablement que parce que le polygone est convexe et/ou trapézoïdal, bien que cela reste de la pure spéculation basée sur le fait que mon algorithme a été produit heuristiquement.