ALGORITHME DE DOUGLAS-PEUKER

cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008 - 13 avril 2008 à 03:55
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009 - 22 avril 2008 à 00:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46344-algorithme-de-douglas-peuker

opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
22 avril 2008 à 00:47
J'ai indiqué ce lien au cas où quelques téméraires voudraient pousser plus loin la recherche; en ce qui me concerne, j'arrête là avec ce code, j'y ai passé trop de temps à mon avis, d'autant plus que ce sujet n'a pas l'air de passionner les foules (dommage!). Ceci dit, si le code existant recèle un bug malicieux, j'en assure la maintenance, il n'y a pas de soucis!

a++
GillesWebmaster Messages postés 496 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 29 juillet 2009 1
21 avril 2008 à 21:58
Je me réjouis de voire vos améliorations!
Bonne soirée
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
21 avril 2008 à 19:55
@GillesWebmaster,

Merci pour la note!

"j'aurais mis une valeur plus petite que 1000"
C'est noté, j'y penserai si une mise à jour s'avère nécessaire.

Depuis la publication de ce script, j'ai découvert qu'il existait 2 manières d'écrire (dont une forcément erronée!) le nom des auteurs de l'algorithme.
Le résultat des requêtes suivantes donne, sur Google :
"douglas-peuker" : 6980 pages
"douglas-peucker" : 17100 pages
et rares sont les pages présentes à la fois dans les 2 recherches, alors qu'elles traitent manifestement de la même chose! Celà m'a permis d'accéder à de nouvelles informations, notamment qu'il est possible d'améliorer l'algorithme :

http://geometryalgorithms.com/Archive/algorithm_0205/algorithm_0205.htm

A++
GillesWebmaster Messages postés 496 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 29 juillet 2009 1
21 avril 2008 à 07:07
ça c'est de l'algorithme!
Sur ta démo, j'aurais mis une valeur plus petite que 1000...
10/10 !!!
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
18 avril 2008 à 01:09
Salut,
J'ai donc étudié le code d'Anthony Cartmell à la loupe afin d'en améliorer les performances; résultat des courses : une "réduction" exécutée en un temps divisé par 3, l'occupation de la mémoire, divisée par 3 également (à vue de nez).
Moyens mis en oeuvre : passage des tableaux par références, suppression des calculs redondants et "dégraissage" de la POO (suppression de la classe "Vector" et création d'objets seulement quand c'est nécessaire).
A++
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
14 avril 2008 à 16:35
@CODEFALSE,

"Tu force le passage en text/html dans ta classe"
Ok, je ferai le nécessaire.

"Privilégie un acces private ou protected avec les méthodes magiques __get et __set"
Tu parles là du code d'Anthony Cartmell que je n'ai pas voulu trop chambouler; cependant, ne crois-tu pas qu'en faisant de la sorte, on va rajouter une couche logicielle supplémentaire pour accéder aux données? Comme je le mentionnais dans mon précédent commentaire, un vrai challenge serait d'améliorer les performances de ce code, ce qui passe par un réexamen de l'algo, la suppression des calculs redondants, et aussi un dégraissage au niveau de la POO (et là, je sens que je ne vais pas me faire que des amis!).

A++
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
14 avril 2008 à 10:11
Vraiment bon travail :)
Quelques remarques :
Tu force le passage en text/html dans ta classe, ce que je te déconseille.
En effet on peux l'utiliser dans un autre usage (traitement xml qui doit travailler avec ta classe par exemple).

Par ailleur tu met tes variables de classe en publique, ce qui est déconseillé, car si durant le traitement, je modifie les valeurs de tes variables, je peux faire planter ton code. Privilégie un acces private ou protected avec les méthodes magiques __get et __set comme ca tu controle l'usage de ta classe :)

Ca mérite un 9/10
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
13 avril 2008 à 18:18
Salut,

Merci pour les compliments!
Cet algorithme est certes facile à comprendre, mais peut-être pas si facile que çà à implémenter. Trop content d'en trouver le code sur internet, je me suis contenté d'en vérifier le fonctionnement. Il serait cependant utile de l'étudier à la loupe afin d'essayer d'en améliorer les performances; en effet, avant de l'expérimenter sur les départements (constitués d'à peu près 1000 points chacun), j'ai commencé par le faire sur un contour de la France constitué de 20000 points, et là la moindre réduction s'effectuait, sur mon modeste PC, en une dizaine de secondes!
A noter que dans l'appli la tolérance 0 n'effectue aucune réduction et est donc la plus rapide.

A++
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
13 avril 2008 à 11:48
Que dire si ce n'est bravo !!!

10/10 pour moi ;)
pj27 Messages postés 12 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 7 juillet 2008
13 avril 2008 à 09:46
Cet algorithme est juste très interessant et sa gestion dans ce code est aussi intéressant... Franchement, chapeau, c'est assez propre je trouve ;)
8/10
cs_yoman64 Messages postés 592 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 4 décembre 2008
13 avril 2008 à 03:55
Source très intéressante, je ne connaissais pas cet algorythme. Il est très simple à comprendre (même pour moi qui n'est pas trop callé en maths :P).
Le résultat sur le démo est très réussis. En plus tu as laissé les copyrights d'origine, enfin quelqu'un qui respecte les copyrights , chapeau :)
Rejoignez-nous