|
Bas de page | |
---|---|
Auteur | Sujet : Augmenter d'une distance un polygone |
rufo Pas me confondre avec Lycos! | Bonjour,
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
![]() Publicité | Posté le 03-04-2018 à 13:39:05 ![]() ![]() |
tpierron | L'algorithme générique n'est pas trivial. Les mots-clés que tu veux chercher sont: inward outward polygon offsetting
|
MaybeEijOrNot but someone at least |
--------------- C'est en écrivant n'importe quoi qu'on devient n'importe qui. |
rufo Pas me confondre avec Lycos! | Je parle bien d'ajouter une distance à chaque sommet du polygone, sur un axe centre de gravité/sommet mais ça déforme le polygone de base, donc ça ne fonctionne pas comme je voudrai. Ca marcherait, je pense, si le polygone est strictement convexe. Mais avec des arêtes concaves, ça fout tout en l'air Message édité par rufo le 05-04-2018 à 10:18:26 --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | Bon, j'ai réfléchi sur papier et je pense avoir trouvé un algo pas trop compliqué qui a de bonnes chances de fonctionner dans la plupart des cas.
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | C'est bien un truc dans le genre de ton 2ème cas. Effectivement, je ne veux pas que le polygone initial et celui obtenu se croisent.
Message édité par rufo le 04-04-2018 à 18:04:51 --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | Moi, je pense l'avoir résolu avec l'aire. J'ai l'aire de mon polygone initial qui vaut A0. Au sommet Si, pour savoir lequel des 2 points Pi1 et Pi2 je dois conserver, je calcule l'aire des 2 polygones formés par les sommets S1, S2...Pi1, Si+1, Si+2...Sn et par les sommets par les sommets S1, S2...Pi2, Si+1, Si+2...Sn, ce qui me donne les aires Ai1 et Ai2. Si Ai1 > A0 alors je garde le point Pi1 pour le sommet Si; sinon, je garde le point Pi2.
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
![]() Publicité | Posté le 04-04-2018 à 18:54:52 ![]() ![]() |
rufo Pas me confondre avec Lycos! | J'ai exploré la piste du centre de gravité en calculant la distance [centre de gravité; Pi1] et [centre de gravité;Pi2] et de prendre la plus grande. Mais ça marche pas dans le cas de polygones où le centre de gravité se trouve en-dehors du polygone. --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | Non, l'homothétie n'est pas la bonne solution. Ta figure montre bien pourquoi : le polygone initial n'est pas complètement à l'intérieur du nouveau.
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | Bon, j'ai testé en faisant juste les bissectrices. Ca donne des résultats pas trop mal. Je vais par contre devoir gérer les cas où la distance ajoutée fait que des sommets vont se croiser. --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | Effectivement, je n'utilise plus le centre de gravité.
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | Moi non plus je ne sais pas comment je détermine la distance manquante --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | J'ai discuté avec le gars qui m'a fait la spec hier pour savoir comment il voulait précisément augmenter son polygone. Dans le cas où ds arêtes se croise, en fait, je pense pouvoir carrément supprimer celles qui posent pb, sans même créer de nouveau sommet.
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | P2, il faut arrêter les tangentes de P1 et P2 au cercle centré sur P2. Du coup, ça fait un polygone avec un arrondi aux sommets "trop" convexes.
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
![]() Publicité | Posté le ![]() ![]() |