"Jean-marc" <jm@nowhere.invalid> a écrit dans le message de news:
4825512f$0$2945$ba620e4c@news.skynet.be...
Armel wrote:
"Jean-Marc Bourguet" <jm@bourguet.org> a écrit dans le message de
news: pxb8wyjl7pu.fsf@news.bourguet.org...
Hello,
pour être honnête, cet algo basé sur des tris en fonction des axes
principaux n'a guère de chance de faire mieux que de 'rogner autour
des coins'. du coup les rotations de 90° ont de forte chance de
produire le même résultat "by design"... mais les rotations
aléatoires (en particulier celle qui ne sont pas les angles habituels
basés sur des multiples de 15° .
C'est fort possible :-) En attendant, cet algorithme est efficace, donne
des résultats valables et semble approprié pour la demande initiale.
Le test de base d'un algorithm de ce genre est de fournir les mêmes
données après qu'elles ont subi une rotation de X degrés (étapes de 1
en 1 de 0 à 359), et de vérifier que les points de contour sont
toujours les mêmes à la rotation près.
Bof. Les specs étaient : "faire le contour d'un nuage de points, avec
éventuellement des concavités". Il n'est pas fait mention d'autres
critères...
Un algorithme à base de coordonnées polaires aurait plus de chance de
'tomber en marche'... mais bien sûr tout ce qui compte est d'avoir un
critère exprimé en terme d'angle et/ou de distance (ce qui revient à
dire aussi produit vectoriel et/ou cartésien), pas en fonction d'une
projection sur un ou N axes [N fini].
Bof aussi. Bien sur qu'on peut faire des choses très compliquées, et se
lancer dans des considérations abstraites sur le bien fondé de telle ou
telle méthode. On peut aussi sans trop se fatiguer lancer au vent des
concepts "... coordonnées polaires ...", "... triangulation de Delaunay
...",
"... produit vectoriel ...", "...projections...", etc.
Je trouve un peu triste que sur ce groupe consacré à l'agorithmique, j'ai
été le seul à proposer un algorithme, accopagné d'une implémentation
portable et 100% fonctionnelle, afin que chacun puisse le tester:
http://users.skynet.be/candide/contour_c.html
Il eût à mon sens été sympathique d'avoir d'autres VRAIES propostions
(c'est à dire un algo et une implémentation portable) afin que l'on
puisse comparer.
ça c'est clair, si j'avais le temps j'en aurais bien proposé un.
par contre, le risque même avec un algo qui marche c'est de ne pas se rendre
compte de ses limites, de ses cas d'utilisation valables et on est alors sur
des bases instables pour les développements utilisant les résultats... et
c'est la course à la catastrophe.
en résumé, votre participation est en pratique bien plus importante que la
mienne c'est sûr, mais elle serait vraiment parfaite si en plus de l'algo
vous pouviez nous dire dans quels cas il ne fonctionne pas (par exemple
quelles cordes du contour ne seront pas sélectionnées pour être retirées,
alors que d'autres similaires près des coins le sont).
Bon week-end!
Cordialement,
bon week-end à vous aussi
Armel