|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 4 ![]() |
bonjour à tous,
je viens vers vous car je sèche complet sur le problème suivant j'ai 4 nuages de points 2D dont le nombre de points est propre à chaque nuage. chaque nuage est localisé aléatoirement : ![]() ce que je cherche à faire, c'est tracer la figure à quatre côtés qui englobe parfaitement tous les nuages de points (forme blanche sur l'image). les segments doivent être sur des points ! donc pas d'approximation possible. pour chaque point, je dispose de ses coordonnées x et y, ainsi que l'index de son nuage de point. si vous avez une idée... ? merci |
|
|
00
|
|
|
#2 |
![]() ![]() Jean-Marc Blanc Inscription : avril 2007 Messages : 2 658 ![]() |
Salut!
Voici une méthode simple, mais je ne sais pas ci c'est la plus efficace: Tu commences par définir un quadrilatère dont les sommets sont les "premiers" points de chaque couleur. Ensuite, tu parcours la liste des points rouges du deuxième au dernier. Si un point est à l'intérieur du quadrilatère, tu l'ignores. S'il est à l'extérieur, tu agrandis le quadrilatère en conséquence. Pour finir, tu recommences avec les 3 autres couleurs. Jean-Marc Blanc
__________________
Calcul numérique de processus industriels Formation, conseil, développement Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux) |
|
|
00
|
|
|
#3 | |
|
Expert Confirmé Sénior
![]() ![]() Jean-Michel BORLOTFabricant et casseur d'avions Inscription : avril 2004 Messages : 2 984 ![]() |
Citation:
En rajoutant que tu reparcours ta liste de points depuis le début si tu agrandis le quadrilatère, car rien ne dis que tu ne sortes pas un point précédent interne en bougeant un côté... et en faisant attention de ne pas bloquer sur une boucle infinie.
__________________
"Errare humanum est, sed perseverare diabolicum" Si vous avez un terrain constructible dans l'est du Gers à vendre pas trop cher, contactez-moi par MP. Ma page sur DVP.com : articles Java/Jogl Mon site www.plegat.org |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 4 ![]() |
effectivement avec une boucle répétable ça devrait le faire, au bout d'un moment l'unique solution devrait être trouvée.
j'avais oublié de préciser que le sens des nuages (ou couleurs) est toujours le même, toujours rouge-jaune-vert-bleu dans le sens des aiguilles d'une montre. je peux donc le séparer en deux triangles pour effectuer les calculs sans risquer de croisements. merci pour vos réponses, je vais essayer et je vous tiens au courant |
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() Chercheur en informatique Inscription : avril 2008 Messages : 272 ![]() |
Je pense que tu peux ignorer le fait que c'est un quadrilatère et simplement trouver des droites pour chaque couple de couleurs (et passant par un de leurs points) qui ont tous les points du même coté. Après, tu as juste a trouver les intersections de tes droites pour faire ton quad.
|
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2006 Messages : 4 717 ![]() |
Pour moi, le problème se décompose en 2 parties :
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 4 ![]() |
hé bien voila ça marche
la première méthode avec le quadrilatère qui s’agrandit au fur et à mesure fonctionne mais peut être lourde selon les cas car on peut réitérer plusieurs fois. finalement c'est la méthode proposée par math_lab qui fonctionne très bien. en fait les calculs sont les mêmes que la première méthode, sauf que l'approche est plus directe c'est une simplification de la première méthode en somme.merci à tous pour votre aide
|
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : novembre 2006 Messages : 12 919 ![]() |
Pourquoi ne pas déterminer les équations des 4 droites qui forment le polygone ?
En prenant :
Les 4 sommets sont calculés par l'intersection des droites. Ou alors j'ai raté quelque chose ?
__________________
• Mes contributions MATLAB (R2009a - Windows & Linux) • J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck) • Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel) • Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille |
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 740 ![]() |
Il y a encore plus simple : il n'y a pas besoin des équations des droites. Les 4 points suffisent...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
|
|
#10 | |
![]() ![]() Inscription : août 2007 Messages : 3 585 ![]() |
Bonjour,
Citation:
![]() Ici l'un des point sort du quadrilatère.
__________________
Pour une bonne utilisation des balises code c'est ici! Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sourcesLa nature est un livre écrit en langage mathématique. Galilée. |
|
|
|
00
|
|
|
#11 | |
![]() ![]() Inscription : novembre 2006 Messages : 12 919 ![]() |
Citation:
![]() ![]() Sinon une autre idée (vu la configuration proposée dans le premier message) :
__________________
• Mes contributions MATLAB (R2009a - Windows & Linux) • J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck) • Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel) • Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille |
|
|
|
10
|
|
|
#12 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2006 Messages : 4 717 ![]() |
Citation:
Excellente astuce dans le cas présent pour réduire le nombre de points de l'envellope convexe.
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson |
|
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 4 ![]() |
en effet c'est plus compliqué qu'il n'y parait, les deux premières méthodes ont l'avantage d'être sans surprises.
Graffito et Dut : l'enveloppe convexe pourrait peut-être fonctionner, à voir avec la suite du programme, car pour l'instant j'ai vraiment besoin que chaque segment soit sur deux couleurs, et comme un point jaune peut être plus près d'un point rouge que des autres points jaunes, le résultat pourrait ne pas convenir. la méthode de math_lab reste rapide en calcul et convient à mon utilisation. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com