Bonjour a tous,
J'ai un probleme qui relève plus des maths que de la prog, mais voyons voir tout de même. Je suis relativement débutant en programmation, et je code en F77.
Je cherche a faire un programme d'interpolation lineaire. Comprenez, pour un ensemble de formes geometriques données, (dans mon cas, ce sont des espèces d'ellipsoïde), definies par un ensemble de coordonnées (x,y) je dois calculer les coordonnées de nouveau points avec quelques contraintes (c'est la que ça se complique).
-Le nombre de point doit toujours etre le même quelque soit la forme. C'est a dire, si lance mon programme sur 6 formes, elles doivent toutes avoir a la fin le même nombre K de points interpolés. Le must serait que ce nombre de point soit fixé par l'utilisateur, mais ça, ça change pas grand chose au final.
-Les points doivent tous etre equidistants, y compris le dernier avec le premier. (ce qui veut donc dire que la distance entre chaque point ne sera pas la même d'une forme a l'autre, au final.)
Mon probleme est relativement simple. Prenez un cercle, et essayez de placer 4 points equidistants dessus. vous verrez tres vite que la distance entre ces quatres point n'est absolument pas egale au perimètre du cercle/4. De plus, mes formes geometriques ne sont pas regulières, donc on ne peux pas calculer un rapport entre le perimetre initial et celui interpolé, par exemple.
La seule possibilité que j'ai trouvé jusqu'a present c'est de calculer un premier run avec la distance entre chaque point egale au perimetre divisé par k, et d'affiner la distance par une boucle, cad de faire tourner mon algorythme en reduisant la distance a chaque boucle jusqu'a avoir la bonne.
Mais lorsqu'on a environ 900 formes, avec 300 points a calculer a chaque fois, c'est beaucoup, beaucoup, beaucoup trop long (et souvent hasardeux)
Quelqu'un a une idée ou une suggestion ?
Merci d'avance.
PS: Cela fait deux semaines que je m'arrache les cheveux sur ce p***** d'algorithme, alors même les idées les plus saugrenus sont vraiment, vraiment bienvenues...
Partager