Définition de la fonction d'une courbe de bézier cubique

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
yannickUK
Messages: 6
Enregistré le: 03 Mar 2012, 22:53

définition de la fonction d'une courbe de bézier cubique

par yannickUK » 03 Mar 2012, 23:11

Bonjour à tous,

J'espère poster dans la bonne partie de ce forum.

Désolé pour ma brève présentation qui ne sera sûrement pas d'une grande originalité : je m'appelle Yannick et je ne suis pas allé en cours de math depuis des lustres : du coup je ne comprends plus grand chose…

Je travaille actuellement sur un projet perso en lien avec le dessin typographique. Pour pouvoir placer des points automatiquement sur certains caractères courbes, j'ai besoin de définir dynamiquement la fonction d'une courbe de bézier (si je ne me trompe pas dans la définition : 2 extrémités avec chacune un point de contrôle)

Je connais donc les coordonnées de ces 4 points (mais qui peuvent varier en fonction d'autres points constituant la forme générale)

Pour être plus explicite, rien ne vaut une illustration :

Image

Je connais donc les absisses et ordonnées de A, B, C et D et j'aimerais avoir la fonction générique pour pouvoir placer n'importe quel point entre A et B, comme le point Z par exemple.

En ayant un peu parcouru ce forum, je suis tombé sur certaines solutions, mais j'avoue ne pas trop comprendre… Si quelqu'un pouvait m'expliquer comment cela fonctionne, je lui en serais vraiemnt reconnaissant

voici les débuts de pistes (à moins que je me sois complétement gourré) :
http://www-fourier.ujf-grenoble.fr/~parisse/giac/doc/fr/casgeo/node116.html
http://lefonds.pagesperso-orange.fr/old/html/logiciel/fogtd2.html

Ces pages ont l'air d'être la solution, mais c'est simplement que je vois pas du tout à quoi correspondent ces signes.

Merci !
Y.



Maxmau
Membre Irrationnel
Messages: 1149
Enregistré le: 19 Mar 2008, 10:11

par Maxmau » 04 Mar 2012, 11:40

yannickUK a écrit:Bonjour à tous,

J'espère poster dans la bonne partie de ce forum.

Désolé pour ma brève présentation qui ne sera sûrement pas d'une grande originalité : je m'appelle Yannick et je ne suis pas allé en cours de math depuis des lustres : du coup je ne comprends plus grand chose…

Je travaille actuellement sur un projet perso en lien avec le dessin typographique. Pour pouvoir placer des points automatiquement sur certains caractères courbes, j'ai besoin de définir dynamiquement la fonction d'une courbe de bézier (si je ne me trompe pas dans la définition : 2 extrémités avec chacune un point de contrôle)

Je connais donc les coordonnées de ces 4 points (mais qui peuvent varier en fonction d'autres points constituant la forme générale)

Pour être plus explicite, rien ne vaut une illustration :

Image

Je connais donc les absisses et ordonnées de A, B, C et D et j'aimerais avoir la fonction générique pour pouvoir placer n'importe quel point entre A et B, comme le point Z par exemple.

En ayant un peu parcouru ce forum, je suis tombé sur certaines solutions, mais j'avoue ne pas trop comprendre… Si quelqu'un pouvait m'expliquer comment cela fonctionne, je lui en serais vraiemnt reconnaissant

voici les débuts de pistes (à moins que je me sois complétement gourré) :
http://www-fourier.ujf-grenoble.fr/~parisse/giac/doc/fr/casgeo/node116.html
http://lefonds.pagesperso-orange.fr/old/html/logiciel/fogtd2.html

Ces pages ont l'air d'être la solution, mais c'est simplement que je vois pas du tout à quoi correspondent ces signes.

Merci !
Y.

Bonjour
L'algorithme de de Casteljau permet de calculer un point quelconque de la courbe Bézier à partir des points de contrôle et d'une valeur du paramètre définissant le point à calculer.
Pour calculer "toute" la courbe on utilise l'algorithme de subdivision de de Casteljau.
Il y a de nombreux articles sur le net traitant de ces algorithmes

yannickUK
Messages: 6
Enregistré le: 03 Mar 2012, 22:53

par yannickUK » 04 Mar 2012, 11:55

Bonjour Maxmau, je suis tombé sur cet algorythme ce matin en continuant mes recherches. Je vais essayer de comprendre comment cela fonctionne. J'ai peur que ce soit un peu complexe pour moi mais je vais étudier tout ça et me replonger dans les barycentres, les dérivés, etc.

ce serait quelque chose du genre :
( fonction cubique, de dérivée )

Ca me paraît déjà plus "accessible" que ce que j'ai vu auparavant.

merci !

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 04 Mar 2012, 12:36

yannickUK a écrit:Bonjour Maxmau, je suis tombé sur cet algorythme ce matin en continuant mes recherches. Je vais essayer de comprendre comment cela fonctionne. J'ai peur que ce soit un peu complexe pour moi mais je vais étudier tout ça et me replonger dans les barycentres, les dérivés, etc.

ce serait quelque chose du genre :
( fonction cubique, de dérivée )

Ca me paraît déjà plus "accessible" que ce que j'ai vu auparavant.

merci !

Bonjour,
Je n'ai rien contre les courbes de Béziers, mais, moi pour ce genre de chose dans ce domaine, j'utilise des arcs de parabole.
Je sais, ça fait moins "sérieux", mais c'est certainement plus efficace, et de plus, les courbes qui se croisent, c'est pas possible.

yannickUK
Messages: 6
Enregistré le: 03 Mar 2012, 22:53

par yannickUK » 04 Mar 2012, 15:20

Dlzlogic a écrit:Bonjour,
Je n'ai rien contre les courbes de Béziers, mais, moi pour ce genre de chose dans ce domaine, j'utilise des arcs de parabole.


Le soucis est que j'ai déjà "quelques milliers" de lignes de code qui utilisent cette technique, et en changer signifierait qu'il faille tout recommencer… Mais lorsque j'aurais fini, peut-être que j'étudierais cette option si celle que j'utilise ne me permette pas d'obtenir des résultats convainquant.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 04 Mar 2012, 15:35

yannickUK a écrit:Le soucis est que j'ai déjà "quelques milliers" de lignes de code qui utilisent cette technique, et en changer signifierait qu'il faille tout recommencer… Mais lorsque j'aurais fini, peut-être que j'étudierais cette option si celle que j'utilise ne me permette pas d'obtenir des résultats convainquant.

Vous auriez autre-chose que des listes de points connus en coordonnées?
Je ne sais pas comment vous avez des milliers de lignes de code qui utilise cette technique, la méthode des arcs de parabole ne prend que de l'ordre de la dizaine de lignes de code.
De toute façon, le point le plus difficile dans cela est de calculer l'abscisse curviligne.

yannickUK
Messages: 6
Enregistré le: 03 Mar 2012, 22:53

par yannickUK » 04 Mar 2012, 16:10

Dlzlogic a écrit:Je ne sais pas comment vous avez des milliers de lignes de code qui utilise cette technique


Je me suis mal exprimé, ce que je voulais dire c'est que tout le programme est basé sur cette technique de courbe, et tous les autres glyphes, mise à part le S, C, etc utilisent les béziers.
Ce qui reviendrait à multiplier les classes et redessiner tous les autres glyphes

Je n'ai que ces listes de points en coordonnées ; qu'est-ce que je pourrais avoir d'autre?

Pour mieux comprendre ce que je cherche à faire, voici une vidéo de mon projet. Mon problème se pose sur les empattements des lettres courbes donc :
http://vimeo.com/24358631

Ce serait moins difficile si cette courbe ne variait jamais, mais malheureusement, dans ma fonction de dessin rien n'est fixe et tout varie en fonction du point précédent. (un seul point est en entrée directe mais celui-ci varie en fonction d'une valeur entrée par l'utilisateur)

Maxmau
Membre Irrationnel
Messages: 1149
Enregistré le: 19 Mar 2008, 10:11

par Maxmau » 04 Mar 2012, 17:25

yannickUK a écrit:Bonjour Maxmau, je suis tombé sur cet algorythme ce matin en continuant mes recherches. Je vais essayer de comprendre comment cela fonctionne. J'ai peur que ce soit un peu complexe pour moi mais je vais étudier tout ça et me replonger dans les barycentres, les dérivés, etc.

ce serait quelque chose du genre :
( fonction cubique, de dérivée )

Ca me paraît déjà plus "accessible" que ce que j'ai vu auparavant.

merci !

Une cubique bézier est parfaitement déterminée par la donnée de son polygone de contrôle (P0,P1,P2,P3). Elle passe par P0 et P3. La tangente en P0 est la droite (P0P1). La tangente en P3 est la droite (P3P2). Pour modifier l’allure de la courbe il suffit de bouger les points de contrôle. Pour transformer la courbe par une transformation géométrique classique (symétrie, homothétie ..etc) il suffit de le faire pour les points de contrôle.
Ces propriétés sont particulièrement bien adaptées au travail que tu fais
L’algorithme de de Casteljau est essentiel pour le calcul d’une courbe Bézier.
Si M(t) ( 0<= t <=1) est le point décrivant la cubique Bézier de polygone de contrôle (P0,P1,P2,P3) voici l’algorithme de de Casteljau calculant M(t) à partir de t et des points de contrôle P0,P1,P2,P3.
P0 P1 P2 P3

P10 P11 P12

P20 P21

P30 = M(t)

Chaque terme est le barycentre du point juste au dessus et du point au dessus à droite affectés des coefficients (1-t) et t
Par exemple P21 = (1-t)P11 + t P12
La tangente en M(t) est la droite (P20P21)

yannickUK
Messages: 6
Enregistré le: 03 Mar 2012, 22:53

par yannickUK » 05 Mar 2012, 17:48

Merci pour ces précisions Maxmau
Mais je ne comprends pas la signification des points P10, P20, P30, etc. Serait-il possible d'avoir ces éléments formatées TEX ? Ca m'aiderait bien et m'éviterait de partir sur une fausse piste.

Merci !

Maxmau
Membre Irrationnel
Messages: 1149
Enregistré le: 19 Mar 2008, 10:11

par Maxmau » 05 Mar 2012, 18:00

yannickUK a écrit:Merci pour ces précisions Maxmau
Mais je ne comprends pas la signification des points P10, P20, P30, etc. Serait-il possible d'avoir ces éléments formatées TEX ? Ca m'aiderait bien et m'éviterait de partir sur une fausse piste.

Merci !

P10 = P indice (1,0)
+ généralement Pïj = P indice (i,j)
Le plus important est de voir comment tous ces points sont obtenus à partir des pôles pour aboutir au point M(t) de la cubique

yannickUK
Messages: 6
Enregistré le: 03 Mar 2012, 22:53

par yannickUK » 05 Mar 2012, 18:02

Maxmau a écrit:P10 = P indice (1,0)
+ généralement Pïj = P indice (i,j)
Le plus important est de voir comment tous ces points sont obtenus à partir des pôles pour aboutir au point M(t) de la cubique


Parfait, merci. C'est ce que j'avais compris mais je préférais être sûr.
Merci à tous, je devrais pouvoir m'en sortir avec ces infos !

Y.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 32 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite