Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 2008
-
19 mars 2006 à 13:00
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 2008
-
29 mars 2010 à 16:21
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 29 mars 2010 à 16:21
Demande à Renfield, qui est l'auteur du projet Rey_XpBasics dont je me suis servi ici.
De mon côté je je ne suis plus en mesure d'apporter de l'aide au sujet de VB.
jarodjarod
Messages postés49Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention 5 mai 2017 29 mars 2010 à 16:18
enfait, je viens de trouver un projet vb Rey_XpBasics, mais je ne sais pas comment proceder pour le faire marcher, il contient un fichier ReyXp.ocx, est ce qu'il faut le copier qqpart ?
PLZ help
jarodjarod
Messages postés49Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention 5 mai 2017 29 mars 2010 à 15:26
bjr, j'utilise Microsoft Visual Basic 2008, j'ai essayé d'ouvrir votre projet ( ou de le convertir )mais il nécessite l'OCX (ReyXp.ocx), comme vous l'avez mentionnez dans la description.
J'ai fait des recherches, mais je n'ai pas trouvé ce composant pour le télécharger afin de l'intégrer pour que le programme marche enfin.
Any help is welcome thank you.
jarodjarod
Messages postés49Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention 5 mai 2017 28 mars 2010 à 20:10
ok, merci
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 28 mars 2010 à 19:46
Les exécutables ne sont pas inclus dans les sources. Il faut *compiler* le projet. Par ailleurs, je ne pratique plus VB. Je ne peux plus fournir d'aide sur ce point.
jarodjarod
Messages postés49Date d'inscriptionsamedi 7 juillet 2007StatutMembreDernière intervention 5 mai 2017 28 mars 2010 à 19:43
EnveloppeConvexe.exe
prjEnveloppeConvexe.exe
ce sont deux fichiers manquant, et j'en ai besoin !!
SOS help plz.
Zakata
Messages postés59Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention17 juillet 2009 28 mai 2007 à 21:58
Petite rectification, la boucle trouve le point le plus a gauche su ce dernier n'a pas une asisse comune avec un autre. Dans le cas contraire, il trouvera le point le plus à gauche et le plus en bas des points.
Voila a plus
Damien
Zakata
Messages postés59Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention17 juillet 2009 28 mai 2007 à 21:48
Salut
Je suis en train de regardre ta source car c'est exactement ce qu'il me faut.
J'ai cependant noter une différence entre ce que fesait ton algo et ce que dit ton commentaire et je voulais savoir si ca avait une grande importande:
Tu as écrit :
'1. Recherche du point situé le plus en bas à gauche
For i = 0 To UBound(iAbscisses)
If i = 0 Then
'Pour faire des comparaisons, il faut bien assigner des valeurs au départ !
xMin = iAbscisses(0)
yMin = iOrdonnées(0)
Else
'L'abscisse est inférieure : le point est plus à gauche !
If iAbscisses(i) < xMin Then
xMin = iAbscisses(i)
yMin = iOrdonnées(i)
'L'abscisse est identique mais l'ordonnée est inférieure :
'le point est plus bas !
ElseIf iAbscisses(i) = xMin And iOrdonnées(i) < yMin Then
xMin = iAbscisses(i)
yMin = iOrdonnées(i)
End If
End If
Next
Or ce bout de code trouve en fait le point le plus a gauche mais pas le plus en bas. Pour le voir j'ai essayer cette suite de points : 3,2,4,4,4,1,1,4,2,1 et il me donne xMin=1 et yMin=4.
Puisque ton code marche, j'imagine que ce ne doit pas être important mais ca veut dire aussi qu'il est possible d'optimiser le programme en suprimant quelques lignes de la boucle cidessus :
'1. Recherche du point situé le plus à gauche
'Pour faire des comparaisons, il faut bien assigner des valeurs au départ !
xMin = iAbscisses(0)
yMin = iOrdonnées(0)
For i = 0 To UBound(iAbscisses)
'L'abscisse est inférieure : le point est plus à gauche !
If iAbscisses(i) < xMin Then
xMin = iAbscisses(i)
yMin = iOrdonnées(i)
End If
Next
Voila en gros ma question : l'algo marchera t'il toujours si je le modifi ainsi ?
Merci a plus
Damien
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 24 mars 2006 à 19:47
Salut !
us_30 et les autres, merci pour vos commentaires et les suggestions qu'ils comportent (et, ne soyons pas ingrat,merci aussi pour les notes !). Le lien que propose Baka02 nous propose l'algorithme issu de la stratégie "diviser pour régner" (oui, on peut traduire divide and conquer en français !). De même que la marche de Graham, il est en O(nlog(n)) ce qui est meilleur que O(nh), je vous l'accorde. Alors maintenant il ne reste plus qu'à programmer l'un de ces algos en complexité logarithmique et non linéaire ! Avis aux amateurs, je doute d'avoir le temps de le faire, ou bien plus tard !
Cordialement,
Cacophrène
baka02
Messages postés4Date d'inscriptionvendredi 17 mars 2006StatutMembreDernière intervention28 mars 2006 21 mars 2006 à 11:19
Bonjour,
Je ne connais pas votre intérêt pour les algorithmes de calcul d'enveloppes convexes, mais si vous êtes intéressés, vous pouvez chercher (sur Google ou yahoo) des algorithmes de type "divide and conquer" qui ont donné naissance à des algo comme "quick hull". Bon maintenant de là à le coder en VB ...
C'est pas aussi simple que Jarvis mais très intéressant à comprendre et ça introduit des notions de compléxité des algorithmes.
J'ai trouvé ça qui est pas mal :
http://www-timc.imag.fr/Antoine.Leroy/tutoriaux/convexHull/CH.html
Bonne lecture.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 19 mars 2006 à 20:30
Bonsoir à tous,
En effet, le code est bien construit, très compréhensible et bien commenté; c'est un petit 10/10...
Maintenant la question que je me pose, c'est comment trouver l'algorithme le plus rapide, bien que l'utilisation du calcul du déterminant semble très correcte... Ces petits problèmes qui semblent simple en apparence, sont souvent de vrai casse-tête dès qu'on cherche à les optimiser...
Amicalement,
Us.
jean_marc_n2
Messages postés170Date d'inscriptionjeudi 11 décembre 2003StatutMembreDernière intervention24 janvier 2009 19 mars 2006 à 19:56
Hello, très sympa, le code est nicekl et bien commenté. Le tout fonctionne parfaitement et l'exemple d'utilisation est très sympa, avec un joli rendu.
Je mets un 10/10, bien mérité.
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 19 mars 2006 à 14:51
En effet.
boulacmoi
Messages postés10Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention 4 juin 2009 19 mars 2006 à 14:41
Merci,
Personnellement je suis arrivé a appliqué la méthode dont j'avais parlé sur le forum, a ce que j'ai vu c'est la méthode Jarvis, mais légerement modifié
Je prend le point le plus en bas et je tourne dans le sens trigo en prenant comme point suivant, celui qui m'offre le plus petit angle par rapport a un repère arbitraire
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 19 mars 2006 à 13:00
Juste une précision : L'algorithme que je vous présente s'apparente à la "marche de Jarvis". Il existe une autre méthode, le "parcours de Graham". On peut trouver quelques infos sur le sujet sur Wikipédia (tapez http://fr.wikipedia.org/wiki/Enveloppe_convexe).
De façon imagée, la marche de Jarvis s'apparente à un emballage dans du papier cadeau : une fois le premier point trouvé, on tourne autour du nuage de sorte à l'emballer. Le déterminant vient à notre secours pour faire "comprendre" à l'ordinateur ce qu'il faut faire. Bien entendu, face à une telle situation, un être humain a une vue d'ensemble, et son raisonnement est très différent.
A noter, enfin, que l'on peut aussi envisager le cas des polyèdres convexes, mais inutile de dire que la programmation n'est plus aussi simple qu'ici.
29 mars 2010 à 16:21
De mon côté je je ne suis plus en mesure d'apporter de l'aide au sujet de VB.
29 mars 2010 à 16:18
PLZ help
29 mars 2010 à 15:26
J'ai fait des recherches, mais je n'ai pas trouvé ce composant pour le télécharger afin de l'intégrer pour que le programme marche enfin.
Any help is welcome thank you.
28 mars 2010 à 20:10
28 mars 2010 à 19:46
28 mars 2010 à 19:43
prjEnveloppeConvexe.exe
ce sont deux fichiers manquant, et j'en ai besoin !!
SOS help plz.
28 mai 2007 à 21:58
Voila a plus
Damien
28 mai 2007 à 21:48
Je suis en train de regardre ta source car c'est exactement ce qu'il me faut.
J'ai cependant noter une différence entre ce que fesait ton algo et ce que dit ton commentaire et je voulais savoir si ca avait une grande importande:
Tu as écrit :
'1. Recherche du point situé le plus en bas à gauche
For i = 0 To UBound(iAbscisses)
If i = 0 Then
'Pour faire des comparaisons, il faut bien assigner des valeurs au départ !
xMin = iAbscisses(0)
yMin = iOrdonnées(0)
Else
'L'abscisse est inférieure : le point est plus à gauche !
If iAbscisses(i) < xMin Then
xMin = iAbscisses(i)
yMin = iOrdonnées(i)
'L'abscisse est identique mais l'ordonnée est inférieure :
'le point est plus bas !
ElseIf iAbscisses(i) = xMin And iOrdonnées(i) < yMin Then
xMin = iAbscisses(i)
yMin = iOrdonnées(i)
End If
End If
Next
Or ce bout de code trouve en fait le point le plus a gauche mais pas le plus en bas. Pour le voir j'ai essayer cette suite de points : 3,2,4,4,4,1,1,4,2,1 et il me donne xMin=1 et yMin=4.
Puisque ton code marche, j'imagine que ce ne doit pas être important mais ca veut dire aussi qu'il est possible d'optimiser le programme en suprimant quelques lignes de la boucle cidessus :
'1. Recherche du point situé le plus à gauche
'Pour faire des comparaisons, il faut bien assigner des valeurs au départ !
xMin = iAbscisses(0)
yMin = iOrdonnées(0)
For i = 0 To UBound(iAbscisses)
'L'abscisse est inférieure : le point est plus à gauche !
If iAbscisses(i) < xMin Then
xMin = iAbscisses(i)
yMin = iOrdonnées(i)
End If
Next
Voila en gros ma question : l'algo marchera t'il toujours si je le modifi ainsi ?
Merci a plus
Damien
24 mars 2006 à 19:47
us_30 et les autres, merci pour vos commentaires et les suggestions qu'ils comportent (et, ne soyons pas ingrat,merci aussi pour les notes !). Le lien que propose Baka02 nous propose l'algorithme issu de la stratégie "diviser pour régner" (oui, on peut traduire divide and conquer en français !). De même que la marche de Graham, il est en O(nlog(n)) ce qui est meilleur que O(nh), je vous l'accorde. Alors maintenant il ne reste plus qu'à programmer l'un de ces algos en complexité logarithmique et non linéaire ! Avis aux amateurs, je doute d'avoir le temps de le faire, ou bien plus tard !
Cordialement,
Cacophrène
21 mars 2006 à 11:19
Je ne connais pas votre intérêt pour les algorithmes de calcul d'enveloppes convexes, mais si vous êtes intéressés, vous pouvez chercher (sur Google ou yahoo) des algorithmes de type "divide and conquer" qui ont donné naissance à des algo comme "quick hull". Bon maintenant de là à le coder en VB ...
C'est pas aussi simple que Jarvis mais très intéressant à comprendre et ça introduit des notions de compléxité des algorithmes.
J'ai trouvé ça qui est pas mal :
http://www-timc.imag.fr/Antoine.Leroy/tutoriaux/convexHull/CH.html
Bonne lecture.
19 mars 2006 à 20:30
En effet, le code est bien construit, très compréhensible et bien commenté; c'est un petit 10/10...
Maintenant la question que je me pose, c'est comment trouver l'algorithme le plus rapide, bien que l'utilisation du calcul du déterminant semble très correcte... Ces petits problèmes qui semblent simple en apparence, sont souvent de vrai casse-tête dès qu'on cherche à les optimiser...
Amicalement,
Us.
19 mars 2006 à 19:56
Je mets un 10/10, bien mérité.
19 mars 2006 à 14:51
19 mars 2006 à 14:41
Personnellement je suis arrivé a appliqué la méthode dont j'avais parlé sur le forum, a ce que j'ai vu c'est la méthode Jarvis, mais légerement modifié
Je prend le point le plus en bas et je tourne dans le sens trigo en prenant comme point suivant, celui qui m'offre le plus petit angle par rapport a un repère arbitraire
19 mars 2006 à 13:00
De façon imagée, la marche de Jarvis s'apparente à un emballage dans du papier cadeau : une fois le premier point trouvé, on tourne autour du nuage de sorte à l'emballer. Le déterminant vient à notre secours pour faire "comprendre" à l'ordinateur ce qu'il faut faire. Bien entendu, face à une telle situation, un être humain a une vue d'ensemble, et son raisonnement est très différent.
A noter, enfin, que l'on peut aussi envisager le cas des polyèdres convexes, mais inutile de dire que la programmation n'est plus aussi simple qu'ici.
Cordialement,
Cacophrène