Bonjour les amis
je crée des polygones et je voudrais mettre en place un algo qui permettrait de savoir si ce dernier est convexe.
Comment pourrai-je m'y prendre ?
merci
Bonjour les amis
je crée des polygones et je voudrais mettre en place un algo qui permettrait de savoir si ce dernier est convexe.
Comment pourrai-je m'y prendre ?
merci
un peu bourrinement, tu peux calculer l'enveloppe convexe des points en question (algorithme de Graham en n.logn par exemple), et ensuite qu'il s'agit bien du polygone considéré. Sinon, c'est que celui-ci ne peut être convexe.
attention aux angles plats dans ton polygone, fais en sorte que ton algorithme d'enveloppe convexe ne 'saute' pas le point du milieu si 3 pts sont alignés, sinon tu pourras pas le comparer directement avec ton polygone.
I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06
perso, je testerais les angles pour chaque sommet, dès qu'un est rentrant il n'y a plus de convexité.
avec les produits scalaires et vectoriels cela devrait aller.
" Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.
sauf s'ils sont tous rentrants sinon en effet, en tournant le long du polygone, n produits vectoriels de segments consécutifs et les composantes z doivent toutes avoir le même signe.Envoyé par PINGOUIN_GEANT
I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06
Donne-moi un angle rentrant sur un polygone et je te trace un segment avec des points à l'extérieur du polygone.Envoyé par Steki-kun
Rq: on peut espérer que le domaine à l'intérieur polygone vérifie la propriété mathématique suivante :
il se situe localement d'un seul côté de sa frontière.
" Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.
c juste pour faire remarquer que fondamentalement, tu ne sais pas à priori dans quel sens va tourner ton polygone, donc angle rentrant (= angle entre 180 et 360 degrés par définition mathématique, qu'on sache de quoi on parle au moins) n'implique pas que le polygone n'est pas convexe. Le problème est de trouver, dans un même parcours, au moins un angle <= Pi et un angle plus grand. Ca c'est une CNS de convexité.
I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06
justement si, pour moi cela n'a pas de sens de définir un polygone et de ne pas savoir où est l'intérieur du polygone, comme ton contour sépare l'espace en 2 parties distinctes.Envoyé par Steki-kun
Après il faut voir l'implémentation de nkd.
" Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.
manque de pot, il se bien que le polygone, ce soit un tableau (voire une liste) de deux coordonnées à chaque fois, le plan se retrouvant alors orienté par l'ordre de tracé (supposons que c'est un tracé de polygone à la souris dans un paint sommaire par exemple), ce qui peut donner le polygone concave au lieu du convexe dans le doute j'ai préféré préciser, ça ne coûte rien
I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06
merci les amis pour vos contributions
en effet c'est un polygone tracé depuis la souris dont les sommets sont connus en xy et stockés dans un tableau. il y a bien un sens que je me donne pour le créer.
vu vos post je crois que j'ai une idée, celle de tester si tous les angles intérieurs ne sont pas rentrant et qu'ils sont tous <=180 °
je fait le test et je vous fait signe tout de suite
merci et A+
Même sans connaitre le sens de rotation de ton polygone il suffit de vérifier que tous les produits vectoriels Pi-1Pi^PiPi+1 ont même signe (c'est un produit vectoriel de 2 vecteurs, je ne sais pas comment écrire la formule autrement). Ce qui reviens à tester que dans un sens de parcours tous les angles sont soit obtus, soit concaves.Envoyé par nkd
Bein non.... prend un losange aplati... il n'y a que 2 angles obtus...
Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre
Arg, grosse bétise de vocabulaire de ma part, je voulais parler de >=180°, ou <= à 180°. Mais le principe énoncé reste valable.Envoyé par Nemerle
pourquoi "aplati" :Envoyé par Nemerle
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
c'est quand même exactement ce que j'ai écrit au-dessus (en remplacant obtus par rentrant), donc on chippote, on chippote, mais on en revient au même point =)Envoyé par sovitec
I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06
J'avais lu ta contribution un peu trop en diagonale, tu as parfaitement raison. En fait je répondais surtout au dernier post de nkd.Envoyé par Steki-kun
ha bah je te reproche rien, mais c'est marrant quand même comme on tourne en rond (c'est à ça que ca sert le résolu finalement )Envoyé par sovitec
I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06
Pour "forcer" l'imageEnvoyé par Trap D
Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager