peon.master a dit:
Hello.
J'en appelle aux matheux, car ma question ne concerne pas directement la programmation. J'aimerai lisser une courbe. c'est-a-dire, rajouter des points aux bons endroits entre les points déja existants [2D].
Donc mon idée de départ, c'est de traiter les points 3 par 3. Je crois savoir que si trois points existent (et qu'ils ne sont pas alignés), il existe un cercle qui passe par ces trois points. Donc ma question c'est
- comment trouver le centre de ce cercle?
- c'est la bonne maniere ou il y en a une autre, meilleure?
Un cercle, ce n'est pas trop la bonne manière. Il existe d'assez nombreuses possibilités (à commencer par tracer des segments de droite
).
- Quand on veut une équation simple (et pas seulement les points), on approche par une fonction qui a des chances d'approche correctement la courbe : polynôme de degré pas trop élevé, exponentielle ou logarithme par exemple;
- Quand on veut obtenir une "belle" courbe du genre de celle qu'on fait avec illustrator (ou avec un autre logiciel y compris dans le module vectoriel d'appleworks), où tu as des points de conduite et des poignées qui te permettent d'ajuster la courbe à ton goût, on utilise souvent des fonctions spline (les courbes de bézier par exemple). C'est ce genre de truc qu'il te faudrait, je pense.
En fait, c'est assez simple (pour peu qu'on n'ait pas besoin de rajouter les poignées des courbes de Bézier. Par exemple, pour les B-spline
- entre 2 points, on approche par un polynôme de degré 2 ou 3 en général
- on impose que les de courbes entre A et B d'une part , entre B et C d'autre part, passent toutes 2 par A évidemment mais en plus que leurs dérivées soient égales en A (comme ça, on n'a pas de "cassure", la courbe est lisse) ou même que leurs dérivées secondes soient aussi continues (degré 3).
On construit donc une fonction "polynômiale par morceaux" qui passe par les points voulus et qui est bien lisse.
Il y a des algorithmes assez simples pour faire ça. Il y a bien longtemps, j'ai fait un programme sur mac qui permettait de faire des approximations diverses et variées : régressions polynômiales, exponentielles, log, mais aussi des B-spline. Le programme tourne toujous sous classic d'ailleurs (avec quelques bogues, mais il avait les mêmes au départ, c'était un truc vite fait pour des besoins spécifiques).
Tu peux chercher sur le net, je pense que tu peux trouver un outil de ce type ou les algos nécessaires, fais une recherche sur "B-spline".