Académique Documents
Professionnel Documents
Culture Documents
MEMOIRE DE MASTER
PRESENTE POUR OBTENIR LE DIPLOME
DE MASTER
Spécialité : Génie Mécanique
Option : Maintenance Industrielle
PAR
Dédicaces
À ma chère mère ;
Barkat
Dédicaces
Dédicaces
À ma belle-mère ;
À toute la famille ;
Abdellah
Remerciements
Remerciements
Tout d’abord, nous remercions le Dieu, notre créateur de nos avoir donné les forces, la
volonté et le courage afin d’accomplir ce travail modeste.
Nous tenons également à remercier messieurs les membres de jury pour l’honneur qu’ils
nos ont fait en acceptant de siéger à notre soutenance, tout particulièrement :
Mr Ameur pour nous avoir fait l’honneur de présider le jury de cette mémoire.
Nous souhaitons exprimer notre gratitude à Mr. Necib et à Mme. Damene pour avoir faire
de lecteur notre mémoire, aller l’examiner et ils peuvent évaluer cette mémoire. Nous vous
remercions pour l’intérêt que vous avez porté à ce travail et pour vos précieux conseils et
remarques.
Finalement, nous tenons à exprimer notre profonde gratitude à nos familles qui nous ont
toujours soutenues et à tout ce qui participe de réaliser ce mémoire. Ainsi que l’ensemble des
enseignants qui ont contribué à notre formation.
Table des matières
I.Introduction Génerale.................................................................................................................... 1
Chapitre I
Modélisation mathématique
Chapitre II
Algorithmique des transformations
Chapitre III
Réduction de degré des courbes de Bézier
III.1 Introduction ..........................................................................................................................56
III.2 Etat de l’art ...........................................................................................................................56
III.3 Principe de Réduction de degré ...........................................................................................57
III.3.1 Méthode de Forrest ............................................................................................................59
III.3.1.1 Algorithme de réduction .................................................................................................59
III.3.1.2 Algorithme de sub-réduction ..........................................................................................63
III.3.2 Méthode de Bensalah ........................................................................................................66
III.3.2.1 Algorithme de réduction .................................................................................................66
III.3.2.2 Algorithme de sub-réduction ..........................................................................................67
III.3.3 Méthode de Hoschek .........................................................................................................70
III.3.3.1 Paramétrisation intrinsèque ............................................................................................71
III.3.3.2 Réduction de degré .........................................................................................................72
III.3.4 Méthode d’Eck ..................................................................................................................73
III.4 Conclusion ............................................................................................................................77
Chapitre IV
Application: Génération de trajectoires d'outils
Chapitre I
Modélisation mathématique
Chapitre II
Algorithmique des transformations
Figure II.1 Courbe de Bézier non rationnelle P(t ) de degré 5 subdivisée en deux courbes
Figure II.2 Courbe de Bézier rationnelle de degré 5 (de poids wi ) subdivisée en deux
Figure II.3 Courbe de Bézier non rationnelle de degré 3 élevée au degré 5……………….. 39
Figure II.4 Courbe de Bézier non rationnelle de degré 3 réduite au degré 2 par les deux
méthodes de polygone 1 et 2……………………………………..……............. 43
Figure II.5 Courbe précédente de degré 3 réduite par la méthode du polygone moyen
(Méthode de Farin) ……………………………………………………………... 43
Figure II.6 Courbe de Bézier rationnelle de degré 6 réduite au degré 5 par la méthode du
polygone moyen w = {1,1, 2, 0.8, 0.5, 0.8,1.2,1} , w ' = {1,1.304, 0.516, 0.516,1.304,1} …..... 43
Figure II.7 Schéma de l’algorithme de l’insertion d’un nœud de multiplicité s de Boehm. 46
Figure II.8 la courbe avant la suppression de nœud t = t5 …………………………….…… 48
Figure II.11 Suppression d’un nœud pour une courbe B-spline rationnelle de degré 4……… 49
Figure II.12 Le nouveau polygone de contrôle Qi obtenu par l’algorithme Oslo1 en insérant
deux nouveaux nœuds.......................................................................................... 50
Figure II.13 Courbe B-spline de degré 3 avec T = {0, 0, 0, 0,1, 2, 3, 3, 3, 3} .............................. 52
Chapitre III
Réduction de degré des courbes de Bézier
Chapitre IV
Application : Génération de trajectoires d’outils
Nomenclature
Ed Espace affine
e (t ) Erreurs d’approximation
f (b , t ) Fonction d’erreurs
GB Matrice géométrique de Bézier
I. Introduction générale
Vers 1950 les machines outils à commandes numériques (M.O.C.N) sont arrivées [1] et ont
ouvrit des nouvelles perspectives vers la réalisation des surfaces qui ont été non réalisables ou
des usinages plus difficile avec les machines conventionnelles. Pour réaliser ces surfaces, la
C.F.A.O. utilise des systèmes et des logiciels informatiques chacun a un arsenal de modèles et
outils mathématiques pour la conception des formes divers et la fabrication. Permis ces modèle,
on distingue les modèle de Bézier, B-spline, Box-splines, Coons, NURBS,… pour les courbes et
les surfaces gauches qui sont s’exprimées sous forme des fonctions de base polynomiales.
Les systèmes de C.A.O. des courbes et des surfaces reposent sur plusieurs modèles
mathématiques cités au précédent. Ces différents modèles sont fondés sur des fonctions
polynomiales différentes et par conséquent tout transfert de données entre deux systèmes de
modèles différents nécessite un changement de base d’une part. D’autre part, la conception des
courbes et des surfaces à l’aide des systèmes C.A.O exige souvent des modèles polynomiaux de
1
Introduction générale
degré élevé. Cela se justifie aisément par la flexibilité recherchée par l’utilisateur dans la
conception de formes complexes et le respect des contraintes de conception géométriques, le
calcul de courbes définies par l’intersection de deux surfaces et des courbes Offset etc.
L’utilisateur peut en effet souhaiter pouvoir agir sur la forme de la courbe sans modifier ses
caractéristiques géométriques.
Dès lors, l’importance et l’intérêt que présente la réduction de degré réside dans la
possibilité de préserver ces avantages tout en évitant les problèmes d’instabilité liés au degré
élevé et d’incompatibilité lors d’un transfert de données vers des systèmes de F.A.O qui
fonctionnent généralement avec des degrés faibles [2].
Ce mémoire est constitué de 4 chapitres. Le premier chapitre est consacré à des rappels
préliminaires contenant les concepts mathématiques fondalentaux des courbes et des surfaces de
Bézier et B-spline.
2
Chapitre I Modélisation mathématique
I.1 Introduction
Parmi les modèles mathématiques qui sont la base de la conception des courbes ou des
surfaces en C.A.O. et en C.F.A.O. (Conception, Fabrication, Assistées par Ordinateur), le
modèle de Bézier et celui des B-Splines sont les plus utilisés. L’étude du modèle de Bézier est
une introduction à celui des B-Splines, restreintes aux courbes du plan, sont suffisantes pour
comprendre l’intérêt de ces modèles dans la conception interactive des formes. Des présentations
différentes permettront de dévoiler une partie de la « boîte noire » de ces modèles [3, 4]. L’appui
sur des exemples de courbes de degré 2 ou 3 permet d’éviter une complexité calculatoire, sans
nuire aux utilisations réelles qui souvent concernent le degré 3.
Une courbe de Bézier est définie par une équation mathématique dérivée de points
caractéristiques de la courbe. Ces points forment un brisé que l’on appelle le descripteur de la
courbe. La courbe et son descripteur ont les mêmes points de début et de fin. La courbe est
tangente au premier et au dernier segment du descripteur.
3
Chapitre I Modélisation mathématique
L'interpolation n'est pas toujours très adaptée pour certaines utilisations telles que le dessin
par ordinateur, la CAO (conception assistée par ordinateur), etc.
C'est dans le domaine de la CAO que les courbes de Bézier ont été inventées et plus
précisément dans l'industrie automobile. Dans les années 1960, les machines à commandes
numériques sont apparues, il fallait donc décrire les formes (comme les courbes de carrosserie)
avec des équations mathématiques [1].
Un autre procédé était donc nécessaire pour exprimer une courbe avec peu de
paramètres et que ceux ci soient naturels.
4
Chapitre I Modélisation mathématique
5
Chapitre I Modélisation mathématique
La courbe de Bézier de degré n de points de contrôle {Pi }0≤i ≤n est l’ensemble des points C (t ) ,
n
∀t ∈ 0,1 , C (t ) = ∑ Bi ,n (t ).Pi (I-01)
i =0
Les B i , n(t ) sont les polynômes de base de Bernstein sont définie par:
n!
Bi ,n (t ) = Cin .t i .(1 − t ) n −i avec Cin =
i !( n − i )!
Noter que nous pouvons récrire l’équation I.01 pour évaluer un point de la courbe de
Bézier de degré sous la forme suivant :
∀t ∈ [ 0,1] , C (t ) = T .M B .GB
Où : T = (t n, t n−1,...,1) est un vecteur ligne, M B une matrice représente tous les coefficients des
polynômes de Bernstein dans l’équation (I-01) et nommée matrice de Bézier, GB est un vecteur
colonne nommé la matrice géométrique ses éléments sont les points (coordonnées) de contrôle.
Tant que T et GB sont connus, nous avons construit un programme MATLAB sous une
6
Chapitre I Modélisation mathématique
Début
>>MB= Bern_stein(n)
Bern_stein.m
n≠0
Oui Untitl.m
Matrice MB de ( n + 1) × ( n + 1)
Fin
A l’aide de cette fonction, on peut encore tracer les courbes de Bernstein en l’associant avec
deux fonctions nommées « barkat.m et abdo_allah.m».
i =0
• Symétrie : Bi ,n (t ) = Bn −i ,n (1 − t ) (I-04)
7
Chapitre I Modélisation mathématique
• Formule de récurrence :
et B0,0 (t ) = 1 ; Bi ,n (t ) = 0 si i ∉ {0,..., n} .
Donc :
n
• Le maximum : maxBi ,n (t ) = (I-06)
t∈[ 0,1] i
Bi ,n (0) = δ i ,0
On peut écrire : (I-07)
Bi ,n (1) = δ i ,n
• Dérivée :
− n.Bi ,n −1 (t ) i=0
d
∀t ∈ [ 0,1] , Bi ,n (t ) = n. Bi −1, n−1 (t ) − Bi , n−1 (t ) i = 1,..., n − 1 (I-08)
dt
n.Bi −1,n −1 (t ) i=n
8
Chapitre I Modélisation mathématique
Si nous effectuons un changement de base, la nouvelle origine étant O ' , nous obtenons :
n n n n
O ' C = ∑ B in.O ' P i0 = ∑ B in.(O ' O + O P i0) = ∑ B in.O ' O + ∑ B in.O ' P i0 (I-09)
i =0 i =0 i =0 i =0
Comme nous le voyons graphiquement, une courbe de Bézier passe par le premier et le
dernier point.
C (0) = P00
On a :
C (1) = Pn
0
C’est une conséquence directe de la propriété valeurs aux extrémités des polynômes de
Bi , n (0) = δ i ,0
Bernstein :
Bi ,n (1) = δ i ,n
Dans un logiciel de dessin, il est souvent nécessaire de relier plusieurs points avec une
courbe, la encore, cette propriété est aussi très utile de pouvoir contrôler directement les
extrémités courbe [1].
Nous allons le voir en utilisant la formule de la dérivée d'une courbe de Bézier que nous
venons d'étudier.
d
Donc, la tangente en 0 est égale à : OC (0) = n.P00 P10 (I-11)
dt
d
OC (1) = n.Pn0−1 Pn0 (I-12)
dt
Les valeurs des tangentes aux extrémités sont logiques ce qui facilite l'utilisation de
courbes de Bézier. Cette propriété est très intéressante pour joindre plusieurs courbes de Bézier
sans rupture de pente [1].
Une courbe de Bézier ne change pas de forme si nous lui faisons subir une transformation
affine ou une rotation
Si les trois points sont translatés, la courbe ne changera pas car la construction sera
identique [1].
Si les points de contrôle subissent une homothétie (changement d’échelle), il n'y aura pas
de changement de la forme de la courbe. En effet les rapports entre P '00 , P '10 , P '10 seront
identiques à ceux entre P00 , P10 , P01 . Les rapports sont aussi respectés avec P '10 , P '02 , P '11 et P10 , P20 , P11
. La situation est représentée dans la figure I.5(a).
Pour la rotation des points de contrôle, il n'y a évidemment pas de changement. En effet,
lors de la construction pyramidale, la rotation du polygone de contrôle n'a pas d'influence sur la
forme de la courbe. Les rapports entre P '00 , P '10 , P '10 et P00 , P10 , P01 sont identiques.
10
Chapitre I Modélisation mathématique
Ces propriétés, qui sont plus ou moins évidentes, sont néanmoins primordiales. En effet,
lors d'une utilisation pratique comme dans une logiciel de CAO, il est indispensable de pouvoir
translater, agrandir, . . . une pièce sans que sa forme varie.
L'enveloppe convexe d'une courbe de Bézier est le polygone passant par les points de
contrôle d'une courbe de Bézier de sorte que le polygone soit le plus grand possible.
des points précédents Pjr −1 . En effet, les barycentres se trouvent toujours à l'intérieur du polygone
i
Le polynôme de Bernstein n’a qu’un maximum en t = . Ceci a applications en dessin : si
n
nous déplaçons uniquement un des sommets du polygone de contrôle, par exemple P i , alors la
courbe est principalement affectée par ce changement dans la région auteur des points où le
i
paramètre prend la valeur t = . Ceci rend l’effet du changement raisonnablement prévisible,
n
bien que le changement affecte la courbe globalement [6].
Il est possible de faire la moyenne de deux courbes de Bézier. Cette transformation est
aussi appelée l'invariance par combinaison barycentrique.
Les points de contrôle sont les suivants : a0 , a1 ,..., an pour la première courbe et d0 , d1 ,..., dn pour
la deuxième.
n n n
M (t ) = ∑ (α .ai + β .d i ).Bin (t ) = α .∑ Bin (t ).ai + β .∑ Bin (t ).d i (I-13)
i =0 i=0 i =0
11
Chapitre I Modélisation mathématique
Où α + β = 1 . Avec cette condition, lorsque α = 1 la courbe moyenne est la courbe avec les ai
et lorsque β = 1 c’est la courbe avec les di . Il est donc possible de faire la moyenne
moyen pondérée de
deux courbes de Bézier.
La moyenne des points de contrôle de deux courbes donne la même courbe que la
moyenne des points composant ces deux courbes [1].
Dans le cadre d'une utilisation pratique, il peut s'avérer utile de faire la moyenne de deux
courbes notamment si nous voulons fusionner deux courbes en une [1].
Nous choisissons une courbe C qui est définie par un paramètre de 0 à 1 (la courbe doit
être continue).
Nous prenons des points sur la courbe C comme points de contrôle d'une courbe de Bézier.
n
Si : Cn (t ) = ∑ Bin (t ).C (i / n) (I-14)
i =0
En d'autres termes, plus nous prenons de points de contrôle sur une courbe donnée C (t )
plus la courbe de Bézier s'approche de C (t ) [1].
12
Chapitre I Modélisation mathématique
n − k
Pk Qk +1 = .P P (I-15)
n + 1 k k +1
Cet algorithme de calcul d’un point peut être utilisé pour dessiner des courbes et des
surfaces de Bézier. L’idée principale dans ce cas repose sur le fait qu’une restriction d’une
courbe de Bézier est aussi une courbe de Bézier.
Nous présentons ici l’algorithme de De Casteljau qui permet de calculer un point dans une
courbe de Bézier. En considérant une courbe de Bézier, de degré n − 1 , définie par les points de
contrôles {Pi }i =0,...,n−1 , où les Pi sont des points de ℝ 3 , nous souhaitons calculer le point de
paramètre t ∈ [ 0,1] . Notons par Pi k le è nouveau point de contrôle lors de l’étape k d’insertion
Pi 0 = Pi i = 0,..., n − 1
k k −1 k −1
(I-16)
Pi = (1 − t ).Pi + t.Pi +1 k = 1,..., n − 1; i = 0,..., n − 1 − k
La figure I.7 illustre d’un exemple de calcul un point C (t ) d’une courbe de Bézier possédant 4
points de contrôle par l’algorithme de De Casteljau. De la figure I.7.a, nous obtenons deux
polygones de contrôle de deux courbes de Bézier {P , P , P , P } et {P , P , P , P } par
0
0
1
0
2
0
3
0
3
0
2
1
1
2
0
3 la
subdivision du polygone de contrôle. En répétant cette subdivision sur chacun des polygones,
nous aurons une séquence de polygones convergeant vers la courbe de Bézier.
Cet algorithme est coûteux mais stable, la complexité donne lieu à O(n 2) opérations ( n
étant le degré) pour chaque valeur de paramètre t . Quand le nombre de points de contrôle
augmente, le polygone de contrôle tend vers la courbe de Bézier [5].
13
Chapitre I Modélisation mathématique
Figure I.7 : Calcul d’un point C (t ) d’une courbe de Bézier (a) et le schéma de l’algorithme de De
Casteljau (b) [5].
Programmation
Nous avons construit un programme MATLAB sous forme d’une fonction nommée
« bezier_curve.m » exploite l’algorithme de De Casteljau sous forme d’une fonction
« De_Casteljau ». L’organigramme ci-dessous explique cette action :
Début
>>[a,b]=Bezier_curve(x,y)
Bezier_curve.m
Affectation de (x,y,t)
De_Casteljau.m
Plot(a,b) Calculer barycentrique de
(a(t), b(t))
Fig.Courbe de degré
Fin
Figure I.8 : Organigramme explique le dessin en 2D d’une courbe de Bézier par algorithme de De
Casteljau.
Exemple de dessin pour {( x, y )} = {(0, 0), (0, 7), (4,10), (7,10), (8, 6), (2, 3), (7, 0)} :
14
Chapitre I Modélisation mathématique
10
0
0 1 2 3 4 5 6 7 8
A partir de la dérivée d'un polynôme de Bernstein, nous pouvons obtenir celle de la courbe
de Bézier :
n −1
d
C (t ) = n.∑ Bin −i .( Pi 0+1 − Pi 0 ) (I-17)
dt i =0
n −1 n−2
d
C (t ) = (n − 1).∑ Pi .Bn−1,n− 2 (t ) − (n − 1).∑ Pi .Bi ,n− 2 (t )
dt i =0 i =0
n−2 n−2
= (n − 1).∑ Pi +1.Bi ,n− 2 (t ) + (n − 1).∑ Pi .Bi ,n−2 (t )
i =0 i =0
n −2
d
Finalement : C (t ) = (n − 1).∑ ( Pi +1 − Pi ).Bi ,n − 2 (t ) (I-18)
dt i =0
n −2
d
Posons : Pi ' = (n − 1).( Pi +1 − Pi ) pour i = 0,..., n − 2 . On a: C (t ) = ∑ Pi '.Bi ,n −2 (t ) (I-19)
dt i=0
Nous voyons donc que la dérivée d'une courbe de Bézier de degré (n − 1) et de points de
contrôle Pi est une autre courbe de Bézier de degré (n − 2) et de points de contrôle Pi ' ; c’est-à-
dire une courbe de Bézier est infiniment dérivable. On peut donc utiliser tous les algorithmes de
calcul de points de courbes de Bézier pour calculer la dérivée de la courbe de Bézier. En
15
Chapitre I Modélisation mathématique
particulier, la dérivée d’une courbe de Bézier peut être calculée par l’algorithme de
De Casteljau [3].
Une petite variation des points de contrôle d'une courbe de Bézier ne peut pas influencer
fortement la courbe. En revanche, il y plusieurs moyens de définir presque la même courbe.
Autrement dit, si nous réalisons une grande variation des points de contrôle, il est possible que la
courbe de Bézier ne varie que très faiblement [1].
Les propriétés de courbes de Bézier que nous avons vues sont presque toutes des avantages
pour une utilisation pratique. Néanmoins, les courbes de Bézier ont quelques inconvénients :
• Courbe ne passant pas par les points de contrôle, il peut être difficile de contrôler la courbe
bien que, comme nous l'avons vu, l'utilisation de points de contrôle facilite souvent la
conception. Ainsi, les courbes de Bézier ne seraient pas très efficaces pour tracer une courbe
de tendance sur des mesures. Pour ce type de problèmes, nous nous tournons plus vers
l'interpolation cubique et par splines cubiques.
• Manque de contrôle local ; la modification d'un point fait bouger toute la courbe.
• Pour une forme complexe, nous devons utiliser beaucoup de points de contrôle donc le degré
de la courbe est élevé. Celle-ci devient lourde est difficile à manipuler. C'est pour cette raison
que nous préférons raccorder plusieurs courbes de Bézier de degré moindre.
n
∀t ∈ 0,1 , ∑ wi .Bi ,n (t ) ≠ 0
i =0
Une courbe de Bézier rationnelle de degré n [4], dans l’espace affine ε est l’ensemble des
points C (t ) , ∀t ∈ [ 0,1] , vérifiant :
∑B i ,n (t ).wi .Pi n
C (t ) = i =0
n
= ∑ Gi ,n (t ).Pi (I-20)
∑B
j =0
j ,n (t ).w j i =0
16
Chapitre I Modélisation mathématique
I.2.11.1 Principe
Comme nous l'avons vu, il est intéressant de raccorder plusieurs courbes de degré peu
élevé pour former une courbe complexe. Généralement, nous utilisons des courbes de degré 3 car
elles sont simples et permettent d'avoir des points d'inflexion. Les courbes de degré 2 sont aussi
utilisées.
Il est évidemment nécessaire d'assurer la continuité entre les courbes. La continuité la plus
simple et celle de classe C 0 . Il suffit que la courbe soit continue. Etant donné qu'une courbe de
Bézier passe par les points de contrôle extrêmes, il suffit de dire que le dernier point de contrôle
d'une courbe sera le premier de la courbe suivante. Nous noterons la première courbe C (t ) et la
suivante C '(t ) . Il apparait que de tels raccords ne sont pas du tout satisfaisants car, il y a des
cassures (la dérivée n'est pas continue) [1].
Dans le cadre d'un raccordement G 0 les vecteurs dérivées ont la même direction mais pas
forcément la même norme. Il peut être gênant d'avoir de tels raccords pour certaines utilisations
(comme en robotique) où la vitesse doit être constante [1].
dérivée sont continues. Les raccords de type C 1 ont d'autres avantages que de garantir la
continuité du vecteur vitesse. Comme nous le voyons à la figure I.10, le point P '1 est placé
automatiquement à l'aide de P2 et P3 . Avec des raccords G1 ce point aurait peut être placé
n'importe où sur la droite reliant P2 à P3 . Cette liberté rend les courbes plus difficiles à construire
car nous ne savons pas où placer ce point sur la droite [1].
17
Chapitre I Modélisation mathématique
Figure I.10
I. : Schéma du raccord de 2 courbes de Bézier [1].
Programmation
Début
raccordCC0
raccordCC0.m
Input :
cbezier.m
po in
intt de
d e po lyg o ne 1 {X P 1 ,Y P 1}
p olygo
calcul des points
po in
intt de
d e po lyg o ne 2 {X P 2 ,Y P 2 }
p olygo
des courbes 1 et 2
18
Chapitre I Modélisation mathématique
P2
3
P1
2
P3
0 P'0 P4 P'3
P0
-1
-2
P'1
-3
-4
P'2
0 1 2 3 4 5 6
Les B-Splines que nous allons étudier maintenant permettent de résoudre ces problèmes.
I.3.1 Motivations
Il s'agit de fabriquer une courbe qui présente tous les avantages des courbes de Bézier mais
sans ses inconvénients. Ainsi, la courbe devra approximer les points de contrôle, être simple à
manipuler, présenter les mêmes propriétés que les courbes de Bézier, etc.
Le degré de la courbe ne devra pas être proportionnel au nombre de points de contrôle mais
fixe. La modification d'un point ne doit pas affecter toute la courbe.
19
Chapitre I Modélisation mathématique
Les B-Splines ont été développée chez Boeing dans les années 70 et 80 [1]. Les B-Splines
existait déjà avant (en 1946) [4], mais n'était pas utilisées et le concept pas finalisé.
I.3.2.1 Idée
Comme les courbes de Bézier qui s’expriment comme une combinaison linéaire des
polynômes de Bernstein, lesquels forment une base de l’espace vectoriel des polynômes d’un
certain degré, les courbe B-splines se définissent à partir d’une base de fonctions. La différence
essentielle est que les B-splines ne sont pas polynomiales, mais polynomiales par morceaux.
Cela permet d’approximer un nombre quelconque de points de contrôle par des courbes de degré
fixé, par exemple cubique par morceaux [3].
Donc l'idée principale des B-Splines est de remplacer les polynômes de Bernstein par des
fonctions. Ensuite, nous sommerons ces fonctions avec les points de contrôles pour obtenir la
courbe. Une B-Spline ne dépend pas uniquement des points de contrôle mais aussi d'un vecteur
nœud [1]. Ces nœuds associées dans ce vecteur sont les dispensables de raccorder entre les
segments de la courbe et jouent un rôle fondamental dans l'arrangement de ce genre de courbe.
1 si t i ≤ t ≤ t i +1
Où : Ni ,0 (t ) = 1[ti ,ti+1[ ⇒ N i ,0(t ) = (I-21)
0 ailleurs
t − ti t −t
Avec : N i , k (t ) = .N i ,k −1 (t ) + i +1+ k .N i +1,k −1 (t ) (I-22)
ti + k − ti ti +1+ k − ti +1
20
Chapitre I Modélisation mathématique
t − ti
Notation. Soit j = 1,..., m + 1 − i . Si t i < t i +1 , on note ω i , j (t ) =
t i+ j − t i
t − ti
Convention : si t i = t i +1 alors le coefficient sera posé comme étant nul et chaque fois que
t i+ k − t i
...
nous aurons , nous poserons ce quotient égal à 0.
0
successifs se raccordent les uns aux autres. Il existe (k + 1) polynômes de base pour une
représentation de degré . Pour le calcul des valeurs de la fonction de base, on peut utiliser des
oor ou de Cox
algorithmes de Boor Cox-de Boor [5].
A partir des figures précédentes, nous pouvons voir les propriétés générales des fonctions
de base B-splines :
• Les courbes (figure I.14(a)) partants de ti arrivent en ti + k +1 , par contre les courbes (figure
• Support :
• La fonction N i ,k s’annule en dehors de l’intervalle [t i, t i +1[ ;
ti = ti +1 = ... = ti + k < ti +k +1 auquel cas Ni,k (ti ) = 1 (c.-à-d. cas de multiplicité des
nœuds (figure I.15(b));
• 0 < Ni ,k (t ) ≤ 1 pour t ∈ ti , ti +1 ;
• Différentiabilité :
• Pour tout k ≥ 0 , la fonction N i ,k est dérivable à droite, de dérivée [7]:
d 1 1
Ni ,k (t ) = k . Ni ,k −1 (t ) − Ni +1,k −1 (t ) (I-23)
dt ti + k − ti ti + k +1 − ti +1
• au voisinage d’un nœud de multiplicité r , la fonction N i ,k est seulement de classe
C k −r [7];
I.3.3 Courbes B-Splines
Le mot anglais « spline » signifie « latte », c’est-à-dire une pièce allongée, généralement
en bois, suffisamment étroite et mince pour pouvoir prendre une forme donnée.
Une B-spline est une figure linéaire constituée d’une chaîne continue de courbes de Bézier
de degré 3 en général. Chaque courbe est tangente aux autres en points du début et de fin. Une B-
spline est construite à partir d’une seule ligne appelée le descripteur [1].
22
Chapitre I Modélisation mathématique
d’une courbe de Bézier. Touts ces segments ont une continuité de classe C 2 dans le raccord des
points.
Par exemple, une courbe B-spline cubique (degré 3) avec 10 points de contrôle a 7
segments. Sous sa forme déroulée, les B-splines n'interpolent pas de ses points de contrôle, alors
que la courbe de Bézier maintient automatiquement ses points des extrémités. Cependant, des
B-splines peuvent être forcées d'interpoler n'importe lequel de ses points de contrôle de n
sans la répéter, qui n'est pas possible avec la courbe de Bézier.
Définition :
contrôle définit par les points {Pi }i =0,...,n a pour représentation paramétrique :
n
X k (t ) = ∑ N i ,k (t ).Pi (I-24)
i=0
Avec : m = n + k + 1 ;
Théorème :
• Les composantes de X k (t ) sont sur chaque intervalle [ti , ti +1[ des polynômes de
degré k ,
• En un nœud de multiplicité r , la courbe est de classe C k −r [3],
• si t ∈ [ti , ti +1[ , X k (t ) ne dépend que des points de contrôle Pi −k ,..., Pi et se trouve
k
figure I.16) et X 'k (ti ) = ( Pi +1 − Pi ) ;
ti + k +1 − ti
23
Chapitre I Modélisation mathématique
On dit qu’une courbe B-spline est vissée aux extrémités (clamped) si elle est de degré k et
si les nœuds extrêmes t0 et tm sont de multiplicité k + 1 , i.e. t0 = t1 = ... = tk = 0 < tk +1 et
tm−k = ... = tm . Dans ce cas, le nombre de points de contrôle effectivement utiles est m − k − 1 .
(Ex. : figure I.16(a)).
Il résulte du théorème précédent qu’une courbe vissée aux extrémités est tangente à son
polygone de contrôle aux extrémités [7].
Proposition 1 :
Soit X k une courbe B-spline de degré k vissée aux extrémités. Alors X k (t0 ) = P0 et
X k (tm ) = Pm−k −1 . Si de plus P1 ≠ P0 (respectivement Pm−k −2 ≠ Pm− k −1 ), alors la courbe est tangente
I.3.3.1.2 Périodicité
I.3.3.1.3 Symétries
Proposition 3 : Soit σ une symétrie du polygone de contrôle qui préserve l’ordre des sommets,
i.e. une transformation affine telle que σ ( Pi ) = Pi + I . Si le vecteur de nœuds est lui aussi
σ ( X k (t ) ) = X k (t + T) .
Proposition 4 : Soit σ une symétrie du polygone de contrôle qui renverse l’ordre des sommets,
i.e. une transformation affine telle que σ ( Pi ) = PI−i . Si le vecteur de nœuds est lui aussi
Il est possible d’interpoler une courbe B-spline de degré k si on fait ti +1 = ... = ti + k (le
nœud de multiplicité k ) (la figure I.16(b)) illustre la situation) [1]. Il est aussi possible de faire
passer la courbe par un point P i en répétant ce point k fois (comme la montre la figure I.17
(pour k = 3 ).
Figure I.17 : Interpolation des points de contrôle par répétition des points [1].
de Bézier est un cas spécial de B-splines et les N i ,k sont les Bi ,k (figure I.18). Cette action permet
25
Chapitre I Modélisation mathématique
r +1 1
Q j = (k − r ) (Q j − Q j −1)
r r
(I-25)
t j + k −r − t j
Pour i − k + r + 1 ≤ j ≤ i (la convention Q rj+1 = 0 si le dénominateur est nul est en vigueur). Alors
r
X (j r ) (t ) = ∑ Ni, k (t ).Q j (I-26)
j
Donc, on peut employer l’algorithme D Casteljau pour calculer X (jr )(t ) [7].
algorithme de De
correspondante du paramètre. Etant donné un ensemble de n points de contrôle {P i}i =0,...,n −1 d’une
26
Chapitre I Modélisation mathématique
Cox -de Boor est l’évaluation un point de la courbe B-spline pour une valeur de paramètre
t ∈ [t h, t h +1[ avec t h < t h+1 est le suivant [5] :
Pi 0 = Pi i = h − k ,..., h
r (I-27)
Pi = (1 − α i ).Pi +1 + α i .Pi
r −1 r −1
r r
r = 1,..., k ; i = 0,1,..., k − r
t − th − r + i
avec α ir =
th + r − th − r + i
Figure I.19 : Calcul d’un point C (t ) d’une courbe B-spline de degré 2 (a) et le schéma de
l’algorithme de Cox-De Boor (b) [5].
Programmation
Nous avons construit un programme MATLAB qui évalue un point C (t ) d’une courbe B-
spline pour chaque abscisse t d’un vecteur nœud. A la fin de ce programme on peut observer la
représentation graphique de la courbe B-spline.
27
Chapitre I Modélisation mathématique
Début
b_spline.m
Input : T ; x ; y
pour i = 0, ..., n − p − 1
B ( i + 1, :) = b ( t , T , i , p ); b.m
fin pour calcul d 'élém en ts de
la m atrice B
Output : plot(x*B,y*B,x,y)
Fin
Soit (t j ) j = 0,...,m un vecteur nodal. Soit n + 1 scalaires {wi }i =0,...,n , appelés poids, associés aux
∀t ∈ [t0 , tm ] , ∑ wi .Ni ,k (t ) ≠ 0
n
i=0
Une courbe B-spline rationnelle de degré dans un espace affine E {d = 2,3} est l’ensemble des
d
points X k (t ) , vérifiant :
Avec : m = n + k + 1 ;
28
Chapitre I Modélisation mathématique
• Les B-Splines résolvent les problèmes que nous avons constatés pour les courbes de
Bézier,
• il est possible de contrôler les B-Splines
B Splines localement et l'ajout de points n'augmente pas le
degré de la courbe,
• il est possible d'interpoler les points de contrôle,
Le principal
al inconvénient des B-Splines
B est leur complexité due à :
• Difficulté de calculer les fonctions de base.
• Les points de contrôle ne sont plus les seuls paramètres des courbes, il y a aussi le
vecteur nœud.
• Difficulté de gérer les points et les nœuds en même temps. C'est pourquoi nous ne faisons
que varier les points de contrôle, les nœuds sont généralement ouverts aux extrémités et
uniforme au milieu [1].
La surface de Bézier est simplement une prolongation de la courbe de Bézier dans deux
directions paramétriques, un produit tensoriel de deux courbes. C’est-à-dire
C’est dire une courbe de Bézier
déportée le long d’une autre courbe de Bézier génère ce qu’on appelle un carreau de Bézier.
L’ensemble des brisés définissant le carreau constitue le descripteur du carreau. u et t sont les
variables des 3 fonctions, x(u, t ), y (u, t ) , et z (u, t ) . x, y et z sont les coordonnées du point sur le
carreau. Si u est constant et t varier de 0 à 1, le point se trouve sur une courbe
isoparamétrique [1].
Tout point d’un carreau de Bézier est situé à l’intersection de deux isoparamétriques
constantes u et t .
29
Chapitre I Modélisation mathématique
Comme nous avons vue que les courbes de Bézier sont des courbes d’approximation, les
carreaux de Bézier sont aussi des surfaces d'approximation définies à l'aide de courbes de Bézier.
Lors de l’étude de l’algorithme de De Casteljau pour les courbes, nous avons considéré,
étant donné deux points de contrôle Pi et Pi +1 , le point Pi1 = (1 − t ).Pi + t.Pi +1 .Ceci revient à dire
que nous avons considéré la courbe la plus simple passant par Pi et Pi +1 : le segment de droite.
Dans le cas des surfaces, les points de contrôle forment un réseau Pi , j , pour Pi et
i = 0,..., m − 1 , et j = 0,..., n − 1 . Nous allons cette fois considérer la surface la plus simple qui
passe par Pi , j , Pi +1, j , Pi , j +1 et Pi +1, j +1 : la surface réglée. Pour cela, on considère les points
intermédiaires [3] :
Pj(0,1)
,i = (1 − t ).Pi , j + t.Pi , j +1
(1,0) (I-29)
Pj ,i = (1 − t ).Pi +1, j + t.Pi +1, j +1
Puis on pose :
Pi , j Pi , j +1 1 − t
j (u , t ) = (1 − u ).Pi , j
Pi ,(1,1) (0,1)
+ u.Pi ,(1,0) = [1 − u u ].
Pi +1, j +1 t
j . (I-30)
Pi +1, j
Pour u = 0 et t = 0 , on a Pi ,(1,1)
j = Pi , j . Pour u = 0 et t = 1 , on a Pi (1,1)
,j = Pi , j +1 . Pour u = 1
et t = 0 , on obtient P i(1,1)
, j = P i +1, j . Enfin, pour u = 1 et t = 1 , on a Pi , j
(1,1)
= Pi +1, j +1 . Par conséquent,
P0,( rj,r ) (u , t ) = (1 − t ).P0,( rj−1,r −1) (u , t ) + t.P0,( rj−+1,1 r −1) (u , t ) , c’est-à-dd que l’on termine la
( n −1, n −1)
séquence par l’algorithme de De Casteljau 1D, puis on pose : Q (u , t ) = P0,0 .
La figure I.24 est une surface m = n = 3 avec des points choisis de manière aléatoire. Une
surface peut donc avoir des points de rebroussement, se croiser, . . . Avec peu de points de
contrôle, il est possible
le de réaliser des surfaces complexes.
31
Chapitre I Modélisation mathématique
Soit des points de contrôle Pi , j , pour i = 0,...,3 et j = 0,...,3 . Soit Q 0 la courbe de Bézier
définie par les points de contrôle P0,0 , P0,1 , P0,2 et P 0,3 (Figure I.25). D’après l’expression des
Q i = ∑ Pi , j .B j ,3 (t )
j =0
Soit Q(u, t ) = P(u ) , où P est la courbe de Bézier de points de contrôle Q 0(t ),Q1(t ), Q 2(t ), Q 3(t ) .
C’est ainsi que s’expriment les surface de Bézier par les polynômes de Bernstein pour un
nombre quelconque m × n de points de contrôle [3]:
m −1 n −1
Q (u , t ) = ∑∑ Pi , j .Bi ,m −1 (u ).B j ,n −1 (t ) (I-32)
i =0 j =0
Programmation
Maintenant, nous avons pris une bonne idée sur les surfaces de Bézier qui nous a guidées à
construire un programme MATLAB nommé « sur_bezier.m » pour calculer et représenter les
points d’une surface de Bézier. La procédure du fichier « sur_bezier.m » définit un ensemble de
points de contrôle et réalise la construction et la visualisation de la surface de Bézier associée.
32
Chapitre I Modélisation mathématique
Début
sur_bezier.m
sbezier.m
Input: réseau de points de controle
C onstruction d'un échantillonage
de points d'une surface de B ézier
éch antillon age d e
par l'algorithm e de C oox.
la surface de B ézier
D e C asteljau.
Fin
Une surface de Bézier rationnelle de bi-degré (m, n) 3D est définie en 4D par [7]:
m n
33
Chapitre I Modélisation mathématique
m n
= ∑ ∑ Gi ,m; j ,n (u , t ).P i , j (I-33)
i =0 j =0
où les P i , j sont les pôles (les points de contrôle) de la surface. Ce qui donne selon [7] :
Bi ,m (u ).B j ,n (t ).wi , j
Gi ,m; j , n (u, t ) = m n
∑∑ B
r = 0 s =0
r ,m (u ).Bs ,n (t ).wr , s
Les Gi ,m; j ,n (u, t ) sont les fonctions de base rationnelle Bernstein bi-variables.
Comme les courbes B-splines, les surfaces B-splines ont l’avantage d’un contrôle local et
d’un degré peu élevé.
{ }
j = 0,..., n −1
Soit Pi , j un réseau de point de contrôle. Soit k ≥ 1 , qui contrôlera le degré des
i = 0,..., m −1
polynômes considérés par rapport au paramètre u , et soit l ≥ 1 , qui contrôlera le degré des
polynômes en fonction du paramètre t . soit U = (u0 ,..., um + k −1 ) un vecteur nodal par rapport à u ,
et T = (t0 ,..., tn +l −1 ) un vecteur nodale par rapport à t . On définit les fonctions N i ,k et N j ,l , pour
[uk −1 , um ] × [tl −1 , tn ] → 3
ℝ
m −1 n −1
(I-34)
(u , t ) ֏ Q (u , t ) = ∑∑ Pi , j .N i , k (u ).N j ,l (t )
i =0 j =0
La surface Q s’exprime donc comme une somme des fonctions N i ,k , N j ,l pondérée par les
34
Chapitre I Modélisation mathématique
m −1 n −1 m −1 n −1 m −1
Q (u , t ) = ∑∑ Pi , j .N i ,k (u ).N j ,l (t ) = ∑ ∑ Pi , j .N j ,l (t ) .N i , k (u ) = ∑ Q (t ) .N i ,k (u ) (I-35)
i =0 j =0
i
i = 0 j =0 i =0
m n
= ∑∑ Ri , k ; j ,l (u , t ).Pi , j ∀(u , t ) ∈ U × T (I-36)
i =0 j = 0
x y z
( x, y , z , W ) ֏ H ( x, y , z , W ) = , ,
W W W
Ni , k (u ).N j ,l (t ).wi , j
Ri ,k ; j ,l (u, t ) = m n
∑∑ N
r =0 s =0
r ,k (u ).N s ,l (t ).wr , s
35
Chapitre I Modélisation mathématique
I.6 Conclusion
Nous pouvons remarquer que le travail, dans ce chapitre, est consacré à l'étude des courbes
d'approximation. Nous avons prendre une aperçu sur les courbes de Bézier, les B-Splines, les
surfaces de Bézier et enfin les surfaces B-Splines.
Les problèmes d'approximation des courbes et des surfaces présentent un vaste sujet qui
s'étend de l'ajustement de mesures à la conception d'images, de synthèse en passant par la
création de polices de caractères. Avec la révolution industrielle et à l’utilisation des MOCN
(machines-outils à commandes numériques), il devenait obligatoire d'exprimer les courbes
mathématiquement.
Nous avons choisi une approche graphique, c'est-à-dire que nous étudierons plutôt des
courbes destinées à la C.A.O (conception assistée par ordinateur) ou au design.
36
Chapitre II Algorithmique des transformations
II.
II.1 Introduction
En effet, il existe deux catégories des algorithmes sont celles d’évaluation (cités au premier
chapitre) et l’autres de raffinement d’augmente le nombre de points de contrôle qui ne changent
pas réellement la géométrie de la courbe B-spline, et par l’insertion de nœud dans la courbe
paramétrique. Ils servent entre autres à : évaluer des points sur des courbes et surfaces B-splines,
subdiviser des courbes et surfaces et ajouter des points de contrôle pour augmenter la flexibilité
du polygone de contrôle de la forme d’une courbe.
II.2.1 Subdivision
L'algorithme le plus fondamental pour traiter des courbes de Bézier est l'algorithme de
subdivision à une abscisse paramétrique t0 . Ceci a été conçu en 1959 par Paul de Casteljau (qui
travaillait pour la compagnie d'automobile de Citroën) et désigné sous le nom de l'algorithme de
De Casteljau. On le connaît parfois comme algorithme géométrique de construction.
Cette procédure permet de partager une courbe de Bézier de degré en un point défini
en deux courbes de Bézier ont le même degré n [2].
Cet algorithme s’écrit pour les courbes rationnelles comme suivant [8]:
L’expression de l’équation des charges est donnée d’après [8] par l’expression:
r
wir (t0 ) = ∑ wi , j .B j , r (t0 )
i
wi0 (t0 ) = wi
C’est-à-dire: r r −1 r −1
(II-01)
wi (t0 ) = (1 − t0 ).wi (t0 ) + t0 .wi +1 (t0 )
37
Chapitre II Algorithmique des transformations
Ci0 (t0 ) = Pi
Et les pôles : r wir −1 (t0 ) r −1 r −1
wi +1 (t 0) r −1 (II-02)
Ci (t 0 ) = (1 − t 0 ). .Ci ( t 0 ) + t 0 . .Ci +1 (t0 )
wir (t0 ) wir (t0 )
Figure II.1 : Courbe de Bézier non rationnelle P(t ) de degré 5 subdivisée en deux courbes R(t ) et
Q(t ) de même degré [2].
Figure II.2 : Courbe de Bézier rationnelle de degré 5 (de poids wi ) subdivisée en deux courbes
rationnelles de degré 5 (de poids α j et β k ) [2].
L’élévation de degré n d’une courbe de Bézier revient à accroître d’une unité le nombre de
sommets du polygone de contrôle sans changer la courbe ; les nouveaux points de contrôle sont
n + 2 points [9] ;
Q0 = P0 , Qn +1 = Pn
i i (II-04)
Qi = 1 − n + 1 .Pi + n + 1 .Pi −1 ; i = 1,..., n
38
Chapitre II Algorithmique des transformations
Et pour élévation de degré des courbes rationnelles, l’élévation de degré d’une courbe C (t )
de degré n donne la courbe Q(t ) de degré n + 1 est définie par ses n + 2 pôles {Qi }i =0,...,n+1
n +1− i
Qi = Ci1−1 ; i = 0,..., n + 1 (II-05)
n +1
n +1− i
βi = wi1−1 ; i = 0,..., n + 1 (II-06)
n +1
Les C pq (t0 ) seront calculés par l’équation (II-02) et les w qp (t0 ) par l’équation (II-01).
Figure II.3 : Courbe de Bézier non rationnelle de degré 3 élevée au degré 5 [2].
Si l'élévation de degré est regardée comme processus qui présente la redondance (utilisant
des points de contrôle n + 1 pour décrire une courbe qui peut être exactement décrite avec
seulement des points de contrôle de n ), n'est-il pas possible que nous puissions pouvoir réduire
la redondance possible en écrivant une courbe du degré n en tant qu'un du degré n − 1 ?
Farin nous indique que si nous sommes donnés une courbe arbitraire de Bézier du degré
n + 1 , nous ne pouvons pas être dans expectative de trouver une courbe identique du degré (à
39
Chapitre II Algorithmique des transformations
moins que la courbe du degré n + 1 est le résultat de l'élévation de degré et contient la redondance
nécessaire). Le meilleur lequel nous pouvons espérer est une approximation à la courbe
originale. Farin suggère que nous supposons que la courbe que nous souhaitons au degré
réduisons a été obtenus par élévation de degré (utilisant le processus décrit ci-dessus). Alors nous
renversons ce processus imaginé d’élévation de degré (formule II-04) [10, 11]. Ceci donne les
n + 2 points de contrôle, Qi de la courbe, Qn+1 (t ) , degré élevé de Pn (t ) .
Récrivons cet algorithme pour le cas où nous sommes élevant degré la courbe Pn −1 (t ) à
Qn+1 (t ) . Tout ceci exige le remplacement de n par n −1, mais sera plus compatible à notre
examen suivant de ramener le degré d'une courbe de Bézier de n à n − 1 . La nouvelle équation
est donnée par :
i n −i
Qi = .Pi −1 + .Pi , i = 0,1,..., n (II-07)
n n
contrôle de la courbe de degré réduite dans ce processus d'inversion d'élévation. Ceci provoque
ce qui suit (en posant Ri = Pi ) :
Algo. Polygone 1 :
R0 = Q0
n i (II-08)
R0 = n − 1 .Qi − n − 1 .Ri −1 ; i = 1,..., n
Les Qi sont connus, ainsi R i peut être dérivé récursivement. ( Ri sont les nouveaux points
Note. Bien que Farin ne la mentionne pas, il est à peine étonnant que l'approximation ne se
comporte pas bien plus près du point Qn ; Qn (t ) interpole Qn mais l'approximation Ri −1 (t ) ne
fait aucune utilisation à toutes les informations fournies par le point final de Qn (t ) . Nous
pourrions changer le point final Qn qui changerait nettement le chemin de Qn (t ) tout en n'ayant
Une autre formule peut être pareillement dérivée, celle-ci comptant vers le bas de n − 1 en
mettant Si = Pi :
40
Chapitre II Algorithmique des transformations
Algo. Polygone 2 :
Sn −1 = Qn
n n−i (II-09)
Si −1 = i .Qi − i .Si ; i = n − 2,...,1
i
λi = ,
n (II-10)
Pi = (1 − λi ) .Si − λi .Ri ; i = 1,...n − 1
i
Farin réclame cela qui le choix de λ i = ne fournit pas de bons résultats, mais le choix du
n
i i
λi = 0 pour i < et λi = 1 pour i > fournit une approximation raisonnable suivant [12].
n n
n
Farin suggère maintenant utilisation de Ri pour i = 0,1,..., et Si pour
2
n n n n
i = , + 1 ,..., n . (dans le cas où n est même et = , il y a un nombre impair de
2 2 2 2
points de contrôle, ainsi nous prenons la valeur moyenne de Rn / 2 et de Sn / 2 . [13], puisque la
réduction de degré d'une courbe définie par des points de contrôle n + 1 , ainsi son argument
s'applique quand n est impair [14]).
Si (t ) étaient proche le plus satisfaisant leurs points de départ). Nous regardons à Matthias Eck
pour un raffinement de la méthode de renversé-élévation [10].
Afin de réduire l'erreur dans la discussion ci-dessus, nous avons employé la moitié gauche
de Ri et la moitié droite de Si . C'est-à-dire,
n
0 si i < ,
2
1
Pi = (1 − λi ) .R i − λi .S i ; pour i = 1,...n − 1 , λi = si i = ,
n
(II-11)
2 2
n
1 si i > 2 ,
Et pour les courbes rationnelles, à partir des relations exprimant l’élévation de degré d’une
courbe de Bézier rationnelle de degré n et par analogie au raisonnement adopté pour la réduction
de degré des courbes de Bézier non rationnelles, nous pouvons déterminer les pôles inconnues
Ri et les Si et leurs charges respectives de poids α i et β i , ainsi [10, 13]:
R0 = P0
R = n . wi .P − α i −1 . i .R ; i = 1,..., n − 1
i n − 1 α i i α i n − 1 i −1
n i
α i = n − i .wi − n − i .α i −1
(II-12)
Sn −1 = Pn
n w β n−i
Si −1 = . i .Pi − i . .Si ; i = n − 1,...,1
i β i −1 β i −1 i
β = n .w − n − i .β
i −1 i i i i
n − i αi βi i
Qi = . .Ri − . .Si ; i = 0,1,..., n − 1
n µi µi n − 1
(II-13)
n−i i
µ = .α − .βi
n−i
i i
n
L’application successive de cette méthode produit une réduction du degré n au degré
m < n , par une réduction d’un degré à chaque étape. Les erreurs d’approximation s’ajoutent à
chaque étape [2].
42
Chapitre II Algorithmique des transformations
Figure II.4 : Courbe de Bézier non rationnelle de degré 3 réduite au degré 2 par les deux méthodes de
polygone 1 et 2 [2].
Figure II.5 : Courbe précédente de degré 3 réduite par la méthode du polygone moyen (Méthode de
Farin) [2].
Figure II.6 : Courbe de Bézier rationnelle de degré 6 réduite au degré 5 par la méthode du polygone
moyen w = {1,1, 2,0.8,0.5,0.8,1.2,1} ; w ' = {1,1.304,0.516,0.516,1.304,1} [2].
43
Chapitre II Algorithmique des transformations
Le raccordement de deux courbes non rationnelles de Bézier C1(t ) et C 2(t ) de même ordre,
au point C 1(1) = C 2(0) , pose autant de contraintes que l’ordre de continuité géométrique à
satisfaire. Pour avoir une continuité géométrique G k (d’ordre k ) entre deux courbes C1(t )
pôles de C1(t ) , les autres pôles n’ont pas d’influence sur la continuité G k désirée. Les pôles C 2i
Si k = n les deux courbes C1(t ) et C 2(t ) , sont la subdivision d’une autre courbe C (t ) d’après
le principe même de la subdivision [6].
Pour raccorder une courbe rationnelle de Bézier C1(1) définie par ses pôles Ri , et ses poids
α i à une courbe rationnelle de Bézier C 2(0) , de même ordre, définie par ses pôles Si chargés par
les poids β i , au point C1(1) =C 2(0) , en respectant une continuité géométrique d’ordre k , il suffit
Pour permettre le passage à la réduction de degré des courbes B-spline, nous aurons besoin
des transformations du polygone et du vecteur nodal. Nous présentons ici les méthodes
indispensables à cette application.
44
Chapitre II Algorithmique des transformations
L'idée est de déterminer le polygone de contrôle de la courbe après avoir ajouté un nœud
de multiplicité 1 ou de multiplicité s supérieure à 1, dans la séquence nodale (vecteur nœud)
d’une courbe B-spline. La courbe est inchangée suite à cette modification : ni la forme ni la
paramétrisation ne sont affectées.
D’abord, nous allons vue comment sera l’insertion d’un nœud de multiplicité =1 :
vecteur de nœuds T = (t0 ,..., tn + k +1 ) , nous souhaitons insérer dans T un nouveau nœud t avec
th ≤ t < th+1 .
= (tɵ 0 = t ,..., tɵ h = t , tɵ h +1 = tɵ,..., tɵ m +1 = t ) ,
Ainsi le nouveau vecteur de nœuds sera T 0 h m
1 0≤i ≤ h−k
ɵ
t − ti
Qi = αi .Pi + (1 − αi ).Pi −1 avec α i = h − k +1 ≤ i ≤ h (II-17)
ti + k − ti
0 h +1 ≤ i ≤ n + 2
Les seuls points de contrôle qui influencent l’arc de courbe sont : Ph−k +1, Ph −k + 2 ,..., Ph .
On note Qir les points de contrôle de la r ième insertion. Donc, on a selon [11] :
1 0 ≤ i ≤ h − k + r −1
ɵ
t − ti
Q ir = α ir .Q ir −1 + (1 − α ir ).Q ir−−11 avec α i =
r
h−k +r ≤i ≤ h−s (II-18)
ti + k − r +1 − ti
0 h − s +1 ≤ i ≤ n + 2
45
Chapitre II Algorithmique des transformations
Figure II.7 : Schéma de l’algorithme de l’insertion d’un nœud de multiplicité s de Boehm [15].
Par analogie, nous pouvons construire l’algorithme d’insertion d’un nœud tɵ ∈ [t h , t h +1[ pour
une courbe une courbe B-spline rationnelle de degré k comme suit :
1 0≤i ≤ h−k
ɵ
αi .wi .Pi + (1−αi ).wi −1.Pi −1 t − ti
Q = avec α i = h − k +1 ≤ i ≤ h (II-19)
i αi .wi + (1−αi ).wi −1 ti + k − ti
0 h +1 ≤ i ≤ n + 2
II.3.2 Suppression de nœuds
Cette procédure permet de supprimer un nœud du vecteur nodal d’une courbe B-spline, la
courbe devient alors de degré immédiatement inférieur. La suppression de nœuds est considérée
comme étant le processus inverse de l’insertion de nœuds. L’insertion étant une transformation
exacte, c’est à dire que la courbe obtenue est exactement similaire à la courbe initiale, mais la
suppression de nœuds produit en général une approximation de la courbe initiale. Un nœud
inséré peut être supprimé en retrouvant exactement la courbe initiale (nœud surabondant).
46
Chapitre II Algorithmique des transformations
i = r −k ; j = r −s
t −ti t −t j
Calculer α i = ; αi =
t i +k +1 − t i t j + k +1 − t j
i = i +1 ; j = j −1
Les deux termes Pi1−1 et Pj1+1 sont connus par la première itération, il s’agit respectivement de
Pr0−k −1 et Pr0−s +1 .
Si (i = j )
Sinon
1 1
Calculer la distance entre P i −1 et P i +1
Si la distance est inférieure à une tolérance ε , remplacer les points de contrôle Pd par les
1
nouveaux point de contrôle P . d
47
Chapitre II Algorithmique des transformations
t −t 2 1 t −t 3 1
i = r −k = 2 ; j = r −s = 3 ; α2 = = ; α3 = =
t 6 −t 2 2 t 7 −t 3 2
P20 − (1 − α 2 ).P11 P30 − (1 − α 3 ).P41
P21 = ; P31 =
α2 α3
Où : P21 = P1 et P41 = P4 ;
t − t1 1 t − t3 1
i = r − k = 1 ; j = r − s = 3 ; α2 = = ; α2 = =
t5 − t1 2 t7 − t3 2
P10 − (1 − α1 ).P01 P30 − (1 − α3 ).P41
P11 = = 2 P10 − P01 ; P31 = = 2 P30 − P41
α1 α3
Où : P01 = P0 et P41 = P4 ;
48
Chapitre II Algorithmique des transformations
La figure suivante illustre une suppression du nœud t = 0.5 pour une courbe B-spline
rationnelle de degré 4 avec T = {0,0,0,0, 0, 0.2, 0.5,0.6, 0.8,1,1,1,1,1} et ses charges
w = {1,1.2,0.8,1.3,0.7,1.3,0.8,1.2,1} qui donnent les nouvelles charges
w ' = {1,1.2,0.72,1.648,1.6,0.8,1.2,1}
Figure II.11 : Suppression d’un nœud pour une courbe B-spline rationnelle de degré 4 [2].
Les algorithmes d’Oslo1 et Oslo2 sont les algorithmes utilisés dans le tracé des B-splines.
Le principe des algorithmes d’Oslo est qu’il faut recalculer tous les points, puisque il peut y
avoir plusieurs nouveaux nœuds [5]. Ils permettent aussi d’augmenter le nombre de points de
contrôle d’une courbe en insérant simultanément des nœuds, de subdiviser une courbe B-spline
en deux courbes B-spline au point t = t0 , de convertir une courbe B-spline en courbes de Bézier
et de produire un algorithme de contournage B-spline [7].
Soit une courbe B-spline C (t ) de degré k possédant n points de contrôle {Pi }i =0,...n−1 et un
vecteur de nœuds T = (t0 ,..., tn + k ) . Après l’insertion des nouveaux nœuds, nous obtenons une
nouvelle courbe R(u) possédant m points de contrôle {Qi }i =0,...,m−1 et un vecteur de nœuds
C(t ) = R(u) ; [5]. En suivant, nous allons voir l’algorithme Oslo1 puis Oslo2.
n −1
Qi = ∑ α ir, j .Pi , 0 ≤ j ≤ m − 1 (II-20)
i =0
1 si ti ≤ u j < ti +1
α ir, j = (II-21)
0 autrement
u j + r −1 − t i t i + r − u j + r −1
αir, j = .αir,−j1 + αir+−1,1 j , Pour 1 ≤ r ≤ k (II-22)
t i + r −1 − t i t i + r − t i +1
∃h : th ≤ u j < th +1
r +1 (II-23)
α h−r , j ,...., α h, j ≠ 0
r +1
n −1
Notons que ∑ α ir, j = 1 et α ir, j = 0 , si u j < ti ou ti + r +1 ≤ u j
i =0
Figure II.12 : Le nouveau polygone de contrôle Q i obtenu par l’algorithme Oslo1 en insérant
deux nouveaux nœuds [5].
Algorithme Oslo2
Supposons que th ≤ u j < th+1 et u j ≤ u j +1 . L’algorithme Oslo2 obtenu par combinaison des
relations des formules (II-20, II-21 et II-22) et permet de calculer directement les points Q i par
la relation de récurrence suivante [5] :
50
Chapitre II Algorithmique des transformations
0
Pi , j = Pi h−k ≤i ≤ h
r +1
Pi , j = (1 − α i , j ).Pi −1 + α i , j .Pi r = 0,..., k − 1 , h − k + r + 1 ≤ i ≤ h
r r r r
(II-24)
u −t
avec α ir, j = j + k − r i
ti + k − r − ti
Algorithme de Boehm c'est un cas particulier de l’algorithme d 'Oslo. Il insère une unique
valeur nodale.
Dans le cas des courbes B-splines rationnelles, il faut faire une analogie de ces deux
algorithmes d’Oslo pour obtenir les Q j avec ses poids w j .
courbe de Bézier.
Une autre transformation d'une courbe B-spline en segments de Bézier se fait quand on
sature chaque nœud distinct jusqu'à ce que sa multiplicité soit égale à k . Ceci est fait à l'aide de
l'algorithme d'insertion de nœud de Boehm. On obtient alors une séquence nodale de la forme :
T = {a
,...,
a , b
,..., b , c z ,..., z} , chaque valeur distincte de t correspond à un des point de
,..., c ,
k +1 k k k +1
51
Chapitre
re II Algorithmique des transformations
Figure II.13 : Courbe B-spline de degré 3 avec T = {0, 0, 0, 0,1, 2,3,3,3,3} [15].
52
Chapitre II Algorithmique des transformations
II.3.5 Algorithme WM
i
C (t ) = ∑ Pj .N j , p (t ) (II-25)
j =i − p
t − ti p t − ti
C (t ) = C ' = ∑ Q j ,i .B j , p (II-26)
ti +1 − ti j =0 ti +1 − ti
Où :
i p t − ti
∑ Pj .N j , p (t ) = ∑ Qk ,i .Bk , p (II-27)
j =i − p k =0 ti +1 − ti
Si on connaît la décomposition d'une B-spline non uniforme dans la base de Bernstein de degré
p sur l'intervalle ti , ti +1 :
p t − ti
N j , p (t ) = ∑ ϕk , p , j .Bk , p (II-28)
k =0 ti +1 − ti
p t − ti
C (t ) = ∑ Qk ,i .Bk , p
k =0 ti +1 − ti
i p t − ti
C (t ) = ∑ ∑ ϕk , p , j .Pj .Bk , p (II-29)
j =i k =0 t − ti
i +1
53
Chapitre II Algorithmique des transformations
vectoriel de dimension p + 1 des polynômes de degré p , les pôles B-spline Pj peuvent alors être
i
∑ ϕk , p ,i .Pj − Qk ,i = 0 pour k = 0,1,..., p
j =i − p
{ϕ }.{P } = {Q }
k , p, j j k ,i (II-30)
pour j ∈ [i − p , i ] , k ∈ [ 0, p ] , et i ∈ [ p , np − 1]
Où :
p étant le degré
j ∈ [ i − p, i ] , k ∈ [ 0, p ] , i ∈ [ p, np − 1] .
La solution est:
{P } = {ϕ } .{Q }
−1
j k , p, j k ,i (II-31)
Les formules de récurrence sur les fonctions Bernstein et sur les fonctions B-spline
permettent d'établir une formule de récurrence pour le calcul des coefficients ϕ k , p , j de la façon
suivante [7] :
54
Chapitre II Algorithmique des transformations
k ti +1 − ti ti + p +1 − ti +1 p − k t −t
ϕk , p , j = . ϕk −1, p −1, j + ϕ k −1, p −1, j +1 + . ϕ k , p −1, j i j
t j+ p − t j
p t j+ p − t j t j + p +1 − t j +1 p
(II-32)
t − t
+ ϕk , p −1, j +1 j + p +1 i +1
t j + p +1 − t j +1
En effet, pour t ∈ t p , t np −1 , sur tous les intervalles [ti , ti +1 ] , en utilisant l'algorithme WM,
nous pouvons calculer p + 1 pôles B-spline Pi − p ,..., Pi . Alors les pôles B-spline, qui sont définis
Successivement, nous pouvons complètement définir tous les pôles de cette représentation
B-spline non uniforme, et obtenir le polygone Pi .
II.4 Conclusion
Ce chapitre est une introduction au chapitre suivant, car il présente des algorithmes
essentiels pour faire la réduction de degré des courbes paramétrique (modèle de Bézier et B-
spline) en vue de besoin d’échange de données entre systèmes C.F.A.O.
55
Chapitre III Réduction de degré des courbes de Bézier
III.
III.1 Introduction
La réduction de degré de courbes de Bézier est l'un des problèmes importants dans CAGD
(Dessin Géométrique Assisté par Ordinateur) ou CFAO.
Notons le terme conversion par approximation, puisque nous rencontrons des erreurs
inévitables entre la courbe mère et la courbe résultante après la réduction de degré ; la démarche
de l’esprit va fait tant que possible pour minimiser ces erreurs tout en respectant certaines
propriétés géométriques des courbes et des surfaces , comme répondre à un ordre de continuité
géométriques en respectant plusieurs tolérances spécifiques à l’application (position, tangente,
courbure, torsion,…).
La première méthode de conversion des courbes de Bézier a été introduite par Forrest (en
1972), avant que Farin (1983), Watkins & Worsey (1988), Hoschek (1988), Bensalah, puis Eck
(1993) et (1995), ne proposent des algorithmes de conversion par approximation plus ou moins
performantes, mais accusant toutefois certaines lacunes tels que: nécessité d’utilisation de
méthodes non linéaires produisant des temps de calcul relativement importants, coefficient de
réduction fixé à priori, difficulté de respecter des ordres de continuités géométriques aux
raccordements sans grand effort de calcul, trop grand nombre de subdivisions des entités réduites
et passage aux courbes rationnelles et aux surfaces de Bézier et B-spline non rationnelles et
rationnelles nécessitant des calculs souvent sophistiqués. La première catégorie d’algorithmes est
basée sur le principe inverse de l’algorithme d’élévation de degré pour la réduction de degré et
les polynômes de Tchebychev et respectivement de Legendre pour la minimisation de l’erreur
56
Chapitre III Réduction de degré des courbes de Bézier
d’approximation, pendant que la deuxièmes catégorie d’algorithmes reposent sur les propriétés
des courbes osculatrices pour la réduction de degré et sur la minimisation de l’erreur
d’approximation au sens des moindres carrés avec une optimisation paramétrique [16, 17].
57
Chapitre III Réduction de degré des courbes de Bézier
Début
Réduction
034
Entrées
04
*
*. 0
Polygone : )* +,,…,. 0
Tolérance de position : !
)0 +,,…, où " 2
Recherche de nouveau polygone :
Ordre de continuité : /
Subdivision
!
*1
Non
Sortie
0
0
Polygone : )0 +,,…,
Fin
58
Chapitre III Réduction de degré des courbes de Bézier
La méthode présentée ici est celle de Piegl et Tiller (en 1995) [17] basée sur les
fondements de Forrest [2].
La réduction de degré d'une courbe C (t) de Bézier du degré par étapes est de trouver
n n −1
C (t ) = ∑ B i ,n (t ).Pi → Q (t ) = ∑ B i ,n −1 (t ).Q i (III.01)
i =0 i =0
Il y a deux formules récursives bien connues d'extrapolation comme suit (suivant Forrest) [12] :
(Algo. Polygone 1) qui donne R (t ) produisant une bonne approximation au voisinage de t = 0 et
(Algo. Polygone 2) qui donne S (t ) produisant une bonne approximation au voisinage de t = 1
8
6
n -2
si n et paire
R i , pour i = 0,...,
6
2
6
6
S , n
pour i = ,..., n − 1
6
i 2
7
n -3 A
Qi = R i , pour i = 0,..., 2 (III.02)
6
6si n est impaire . R ( n −1) + S ( n −1)
1
6
6
2 2 2
6
n +1
5
S i , pour i = ,..., n − 1
2
59
Chapitre III Réduction de degré des courbes de Bézier
e (t ) = C (t ) − Q (t ) =
8 B
6
1
n +1 (t ). P( n +1) 2 − . Q ( n −1) − Q ( n +1) , si n paire
,n 2 2 2
7 1 n −1
=
2
A (III-03)
6 1 −
5
B ( n −1) ,n (t ) − B ( n +1) ,n (t ) . R ( n −1) (t ) − S ( n −1) (t ) , si n impaire
2 2 n 2 2 2 2
Les valeurs maximum de la fonction d’erreurs peuvent être calculées avec précision : dans
cas est paire, la fonction erreur a un maximum à t = 0.5 ; par contre, pour impaire la
fonction d‘erreurs s’anulle à t = 0.5 , puisque B( n -1) (0.5) = B( n +1) (0.5) à cause de la symétrie
,n ,n
2 2
des polynômes de Bernstein et aussi a deux maximum égaux donnés par l’équation quadratique
suivant [11] :
(n − 1)
t2 − t + =0 (III.04)
4n
- l’erreur est connue précisément le long de la courbe, ce qui évite de calculer l’erreur en
chaque point de la courbe,
n −1
- la courbe initiale et la courbe réduite ont une continuité d’ordre aux extrémités, ce
2
qui est une propriété très importante à considérer lors d’une réduction de degré.
60
Chapitre III Réduction de degré des courbes de Bézier
L’application successive de cette méthode produit une réduction du degré n au degré m < n , par
une réduction d’un degré à chaque étape. Par conséquence, les erreurs d’approximation
s’ajoutent à chaque étape. En appliquant un ordre de réduction de degré k , on peut donc
construire l’algorithme FOR suivant :
Algorithme FOR
Pour i = 0,1,..., n , W i = Pi
Pour r = 1, 2,..., k
R 0 =W 0 , S n -1 =W n
Pour i = 1, 2,..., n -1
61
Chapitre III Réduction de degré des courbes de Bézier
i i
R i = 1 + W. i− .R i −1
n −i n −i
Wi = Ri
Fin pour
Pour i = n − 1, n − 2,...,1
n −i n −i
S i −1 = 1 + .W i − Si
i i
Wi = Si
Fin pour
n = n −1
Fin pour
n -k
Q i = R i , pour i = 0,...,
2
Si ( n − k est paire alors),
Q = S n −k
pour i = ,..., n
i i
2
n − k −1
Q i = R i , pour i = 0,...,
2
n − k + 3
Sinon ( n − k est impaire), Q i = S i , pour i = ,..., n
2
Q ( n − k +1) / 2 = (R ( n − k +1) / 2 + S ( n − k +1) / 2 ) / 2
Fin si
62
Chapitre III Réduction de degré des courbes de Bézier
Nous constatons que l’algorithme FOR produit une approximation en imposant une
continuité maximale C (m-n )/2 aux extrémités de la courbe. En associant à cette méthode de
réduction l’algorithme de subdivision nous obtenons l’algorithme SUB-FOR permettant de
respecter une tolérance ε 0 [2].
L’algorithme de subdivision qui sera utilisé dans toutes les méthodes de sub-réduction est
l’algorithme SUB suivant :
Algorithme SUB :
63
Chapitre III Réduction de degré des courbes de Bézier
Pi = C 0 (t 0 )
i
n −i
Qi = C i (t 0 )
Algorithme SUB-FOR :
N : Nombre de pas ;
n * = 0; n ** = 0
Pour j = 0,1,..., n
FOR (Pj , k → Q )
t = 0; E max = 0
1
t =t + ; d = Q (t ) − Pj (t )
N
Fin faire
1
SUB (P j , t 0 = → P *, P **)
2
n * = n * +2; N = N / 2
Pour i = 0,1,..., n
Pi n *−1 = P * i ; Pi n * = P **i
Fin pour
Sinon
Pour j = 0,1,..., n − k
Q jn ** = Q j
64
Chapitre III Réduction de degré des courbes de Bézier
Fin pour
n ** = n ** + 1
Fin si
Fin pour
Résultat : {Q i j }
j = 0,..., n **
et n ** nombre de courbes de degré (n − k ) .
i = 0,..., n − k
La figure III.8 représente une courbe de Bézier non rationnelle de degré 16 réduite en 5
courbes de degré 6 par l’algorithme SUB-FOR avec ε 0 = 0.01 et k = 10 . La figure III.9 qui
représente la variation de l'erreur de position le long de la courbe montre que la tolérance fixée
est respectée et que les courbes obtenues sont continues aux points communs.
65
Chapitre III Réduction de degré des courbes de Bézier
La méthode de réduction proposée par Bensalah est une assimilation à celle de Farin, où
Bensalah a prend le polygone de la courbe mère à réduire par (Algo. Polygone 1) jusqu’à un
ordre de réduction k qui donne la solution R (t ) tel qu’il fait la même action avec (Algo.
Polygone 2) qui donne la solution S(t), puis il prend Q (t) par (Algo. Polygone moyen) qui est
une moyenne pondérée de R (t ) et S (t ) .
Algorithme BEN1 :
Pour r = 0,1,..., k
n = n −1
Fin pour
Résultat : {R i }i = 0,..., n -k
Algorithme BEN2 :
Pour r = 0,1,..., k
n = n −1
Fin pour
Résultat : {S i }i=0,...,n-k
Algorithme BENm :
66
Chapitre III Réduction de degré des courbes de Bézier
Pour r = 0,1,..., k
(n - k - i ) i
Qi = .R i + .S i
(n - k ) (n - k )
Fin pour
Résultat : {Q i }i=0,...,n-k
Figure III.10 : Courbe de degré 5 réduite au degré 4 par BEN1 et BEN2 [2].
Figure III.11 : Courbe précédente de degré 5 réduite au degré 4 par BENm [2].
III.3.2.2 Algorithme de sub-réduction
Les deux solutions de l’algorithme de réduction de degré des courbes de Bézier ne sont pas
très efficaces pour toute la courbe, mais elles sont quand même pour une partie, donc en partant
d’une courbe P (t ) de degré n on peut faire une réduction du degré puis au point ou on atteint la
tolérance on subdivise en deux courbes la première de degré (n − k ) et l’autre de degré n puis
on fait la même chose à la deuxième courbe et ainsi de suite, jusqu’à la fin de la courbe. Ce
raisonnement est la base du fonctionnement de l’algorithme SUB-BEN. Nous remarquons que
67
Chapitre III Réduction de degré des courbes de Bézier
pour chaque itération on retrouve deux subdivisions, une au début de la courbe par la méthode du
« Algo. Polygone 1 », l’autre à la fin de la courbe par « l’Algo. Polygone 2 ».
Algorithme SUB-BEN :
N : Nombre de pas ;
s = 0; d = Pn − Q n -k
Si (d > ε 0 ) alors
1
t=
N
1
t =t +
N
Fin faire
1
t0 = t − ;s = s +1
N
Q is = Q 0i , pour i = 0,1,..., n - k
Pi = P 1i pour i = 0,1,..., n
1
N =N −
t
s = 0; d = Pn − Q n -k
Si (d > ε 0 ) alors
1
t=
N
68
Chapitre III Réduction de degré des courbes de Bézier
1
t =t +
N
Fin faire
1
t0 = 1−t + ;s = s +1
N
Q is = Q 1i , pour i = 0,1,..., n - k
Pi = P 0i pour i = 0,1,..., n
1
N =N −
t
Aller à (*)
(**) s = s + 1
Q is = Q i pour i = 0,1,..., n − k
Résultat : {Q i j }
j =1,2,...,s
et s : nombre de la courbes de degré (n − k ) .
i =0,...,n -k
Figure III.12 : Courbe de degré 10 réduite en 8 courbes de degré 6 par l’algorithme SUB-BEN [2].
69
Chapitre III Réduction de degré des courbes de Bézier
La figure III.12 représente une courbe de Bézier non rationnelle de degré 10 réduite en 8
courbes de degré 6 par l'algorithme SUB-BEN avec ε 0 = 0.01 . Nous pouvons constater que la
continuité de position sur la figure III.13 est bien respectée grâce à l'ajustement des tangentes.
La méthode introduite dans cette partie, est une méthode effective pour la conversion par
approximation des courbes et des surfaces ; dans cette méthode, Hoschek [18] utilise
principalement :
• Transformation du paramètre (paramétrisation/ reparametrization (correction de
paramètre)) [19] ;
• Technique d’optimisation non linéaire.
Transformer autant que possible une courbe de degré N en une courbe de degré
M > N (élévation de degré) en respectant une tolérance fixée ε 0 .
70
Chapitre III Réduction de degré des courbes de Bézier
Le but de la paramétrisation est de trouver une bonne répartition des paramètres sur les
points Pi permettant une approximation optimale d’une courbe.
d’affecter un paramètre t i à chaque point Pi L’approximation de ces points par une courbe de
Bézier non rationnelle donne [2] :
n
Pi ≈ Y (ti ) = ∑ bi .Bi ,n (ti ) (ti ∈ [ 0,1] , n < N ) (III-05)
i =0
Avec B i ,n (t ) fonctions de base de Bernstein, et {bi }(i =0,...,n ) le polygone de contrôle de Y (t) ;
L’approximation est optimale si la distance entre les deux de points {Y (ti ), Pi } est
N N
D = ∑ D i =∑ (Pi −Y (t i )) 2 → min (III-07)
i =0 i =0
∂D
=0 (III-08)
∂b i
71
Chapitre III Réduction de degré des courbes de Bézier
Figure III.14 : (a) Paramétrisation des points données Pi et l’erreur vectorielle Di . (b) Projection de
l’erreur vectorielle Di
Si on utilise la paramétrisation comme but principal, on oubliera les conditions entre les
courbes qui sont invariantes pour
pour la paramétrisation. Ces conditions sont très connues sous le
nom de continuité géométrique d’ordre k de deux courbes C (t ) et Q (t ) en point commun entre
les deux [2].
Lors que le modèle étudié pour l’algorithme de réduction de degré est celle de Bézier,
Hoschek pose des équations de Continuité géométrique G k forment pour chaque valeur de
(k = 1, 2,3,...) les conditions de continuité dans le modèle de Bézier (vo
voire [2] pour savoir plus
ces condition).
Algorithme HOS
72
Chapitre III Réduction de degré des courbes de Bézier
Output: Les pôles Q i (i = 0,.., m < n ) qi, une erreur de l’approximation ε1 (variable)
A l’instar de Farin, Eck (en 1993) a pris en compte le travail de Farin (l’algorithme
proposé au chapitre précédent) pour la réduction de degré en inversant la procédure de
l’élévation de degré, formulant la formule d’interpolation linéaire suivant :
Eck [14] offre un choix différent de λ pour une meilleure degré-réduction (best degree-
reduction) avec le théorème suivant. Avant cela, cependant, nous devons exposer formellement
le problème de la meilleure degré-réduction et définir l'opérateur de différence vers l'avant.
Bézier Pn (t ) . Alors nous souhaitons trouver les " vrais " points de contrôle Q 0 ,Q1 ,...,Q n −1 qui
Définition. La nième différence vers l'avant des points de contrôle, ∆ n Pi , est définie [10, 21]:
n
n
∆ n Pi = ∑ .(−1) n +1.Pi + j (III-11)
j =0 j
Exemple : ∆ 4 P0 = P0 − 4 P1 + 6 P2 − 4 P3 + P4
73
Chapitre III Réduction de degré des courbes de Bézier
Si ∆ n P0 , alors les termes dans t n décommandent d’omettre une courbe du degré n − 1 , ainsi nous
savoir que la courbe est artificiellement de degré élevé et sera reproduite exactement par
réduction de degré. Ainsi, examinant si ∆ n Pi = 0 est un contrôle simple pour la présence de la
redondance.
élevé contenant la redondance), les points de contrôle Q 0 ,Q1 ,...,Q n −1 fournissent la meilleure
n
2n
λi = 2(1− 2 n ).∑ ou i = 0,1,..., n − 1 (III-12)
j =0 2 j
En outre, l'erreur maximale d'approximation est donnée par [2, 10, 21]:
d ( P ,Q ) = 2 (1− 2 n ). ∆ n P0 (III-13)
Noter cela :
• la méthode de raffinage d'Eck semble apporter une amélioration définie au-dessus de
celle proposée par Farin.
• Cette méthode n'interpole pas les points d'extrémités de la courbe originale. La
divergence entre les points d'extrémité de Pn (t ) et Q n −1 (t ) est plus prononcée pour une valeur
Concernant les deux remarques précédentes, pour maintenir une continuité G 0 , Watkins et
Worsey [20, 22] proposent de changeant le premier et le dernier pôle de Q (t ) pour que
l’interpolation soit valable. Dans notre cas cette correction est tout simplement obtenue en
définissant λ0 = 0 et λn −1 = 0 les autres facteurs sont toujours déterminés par l’équation III-12. Il
est évident que le l’inconvénient est que la propriété de meilleure approximation est perdue.
74
Chapitre III Réduction de degré des courbes de Bézier
Ce qui permet de déterminer la meilleure approximation forcée pour une continuité Gα −1 aux
deux extrémités.
l’exception de:
π
Tm , 0 (t ) = Tm (t ) et Tm , 1 (t ) = Tm t.cos (III-14)
2m
Donc, puisque T m ,α est d’égale oscillation, les signes des coefficients non nuls sont
.34
les facteurs FG,.,E H, sont déterminés par:
75
Chapitre III Réduction de degré des courbes de Bézier
0 (i = 0,..., α − 1)
1 i n
λi,α = λi,n,α = . ∑ . c j ,n ,α (i = α ,..., n − α − 1) (III-
γ
n ,ε j =α j
1 (i = n − α ,..., n − 1)
19)
Où :
n −α
n
λn,α = ∑ . c j ,n,α (III-20)
j j =α
Dans la pratique on ne calcule λi ,n,α et γ n,α qu’une seule fois pour chaque combinaison de
n et α ≥ 1(la solution pour α = 0 est donnée dans l’eq. III-12). Alors les résultats obtenus pour
Pour une application, on les rappelle et on calcule les nouveaux coefficients par III-18, [2].
76
Chapitre III Réduction de degré des courbes de Bézier
Algorithme ECK
Input : {Pi }i =0,...,n pôles de la courbes de degré n,k :ordre de la réduction , α ordre de la
continuité ;
m =n
pour i = 0,1,..., n
Q i = Pi
Fin pour
Pour j = 1, 2,..., k
BEN1 (Q ,1 → R )
BEN2 (Q ,1 → S )
Lecteur : (λ0,m ,α )
Pour i = 0,1,..., m -1
Fin pour
m = m -1
Fin pour
III.4 Conclusion
77
Chapitre III Réduction de degré des courbes de Bézier
exacte requise, mais offre une approximation bien en respectant une tolérance spécifique de
position ou sur continuité dans l’algorithme global de réduction (la sub-réduction) pour but de
minimiser les erreurs de l’approximation et de maintenir plus fidèlement les caractéristiques
géométriques d’une courbe initialement de degré élevé sur son approximation de degré m<n .
Chaque principe d’une méthode de réduction de degré a des avantages et des points faibles par
rapport aux autres méthodes, puisqu’il part des idées mathématiques diffères et obtient des
résultats différents par rapport aux autres d’où l’ordre de réduction, nombre de courbes réduite
en degré " et les erreurs d’approximation. Ainsi que, bien sûr, la nécessité du passage d’une
base Bernstein vers une autre base des polynômes orthogonaux (Legendre, Tchebychev,…) ou
l’inverse et la paramétrisation de points de la courbe initiale qui conduit à des résolutions des
systèmes non linéaires exigent un temps de calcul intéressant au cours de l’implémentation du
processus de réduction de degré.
78
Chapitre IV Application : Génération de trajectoires d’outils
IV.
IV.1 Introduction
Les courbes de Bézier et B-spline offrent plusieurs avantages par rapport aux autres
modèles mathématiques (implicites et explicites). Pour cela, ils sont utilisés dans beaucoup de
domaines, et parmi ces domaines nous citons la C.A.O et C.F.A.O.
Dans ce chapitre, nous allons prendre une application en C.F.A.O sur l’utilisation des
courbes paramétriques « modèle de Bézier ». Le choix de l’application fondé sur l’usinage des
surfaces gauches (complexes). Le problème questionné ici est la génération de trajectoire d’outil,
c.-à.-d un problème de calcul d’intersection surface/surface, la première surface est la surface
gauche à usiner en fraisage à C.N. par contournage (surfaces sculptées [24, 25,26], ou surfaces à
poches [27, 28]) et la deuxième est le plan de coupe. L’idée est basée sur une technique de
subdivision récursive auto-adaptative, opérant sélectivement telle que la discrétisation effective
d’un carreau de surface à usiner n’ait lieu qu’exclusivement au niveau des carreaux de surfaces
où une intersection peut réellement exister. En outre, pour faciliter la procédure de vérification
de l’existence d’intersections, le carreau de surface est assimilé à un plan dont la spécification
géométrique de planéité est utilisée comme critère d’arrêt de la subdivision. Enfin, le calcul
d’intersections «carreau de surface subdivisé / plan de coupe » est ramené à un problème simple
de géométrie plane où les carreaux de surface sont assimilés à des quadrilatères représentés par
leurs pôles respectifs.
Une approche simplifiée proposée dans [29] pour le traitement des problèmes de calcul
d’intersections générées lors de la génération de trajectoires d’outils en fraisage par contournage
de surface de Bézier rationnelles subdivisées, basée sur la technique de planification par courbes
de niveaux ou par plans parallèles. Cette approche s’appuie sur :
Etape1 :
Pour la subdivision récursive d’une surface de Bézier rationnelle aux points de valeurs
paramétriques : u* = 0.5 et t* = 0.5 , on adapte l’algorithme de subdivision des courbes [30]
appliqué à aux (n + 1) polygones dans la direction U au paramètre u * , et aux 2.(m + 1)
polygones dans la direction V au paramètre t * . On obtient ainsi quatre carreaux de surfaces de
même modèle et degré, possédant chacun son propre réseau caractéristique [29].
80
Chapitre IV Application : Génération de trajectoires d’outils
( ) ( )
ε = max P0,0 Pi , j .n − min P0,0 Pi , j .n pour i = 0,..., n ; j = 0,..., m (IV-01)
Où n est le vecteur normal unitaire de la surface considérée. Le critère d’arrêt sera donc :
Etape 2 :
Etape 3 :
Chaînage des segments pour obtenir l’ensemble des contours d’intersection, orientation des
contours
Etape 4 :
Pour un gain d’espace mémoire, la surface initiale ne sera discrétisée au niveau des seules
zone où la possibilité d’intersection avec le plan de coupe peut réellement exister. A cet effet, la
possibilité d’existence d’intersection pour chacun des quatre sous-carreaux résultants de chaque
subdivision sera testé, tel que : « s’il n’existe aucune intersection entre un plan de coupe et le
polygone caractéristique représentant le carreau de surface, alors, il n’existe quasiment aucune
intersection possible entre ce plan et le carreau de surface considéré » [29]. Les carreaux de
surface n’interceptant pas le plan de coupe seront ainsi automatiquement éliminés de la liste
81
Chapitre IV Application : Génération de trajectoires d’outils
chaînée de carreaux interceptant le plan de coupe, tandis que ceux interceptant ce dernier
continueront d’être subdivisés successivement jusqu’au respect total d’une tolérance prescrite.
82
Chapitre IV Application : Génération de trajectoires d’outils
Entrées
{P }
j = 0,..., m
C : Un carreau de surface de Bézier, et ( i , j ) i = 0,..., n son
polygone
[ P] : Plan de coupe
C0 , C1 , C2 , C3 : Carreaux tampons
Début
L1 : Liste chaînée de carreaux interceptant le plan [ P ]
L2 : Liste chaînée tampon de carreaux
Si C
intercepte [ P ]
Oui
Si C Non
conforme Ajouter C à L2
Oui
Tant que :
Ajouter C à L1
Taille L2 ≠ 0
Pour i = 0,...,3
Si Ci
intercepte [ P ]
Oui
Si Ci Non
Ajouter Ci à L2
conforme
Figure IV.2 :
Organigramme descriptif
Oui
du processus de recherche
Ajouter Ci à L1
des intersections.
83
Chapitre IV Application : Génération de trajectoires d’outils
Les figures IV.3 et IV.4 [32] montrent des exemples de facettes issues du processus de
subdivision récursive auto-adaptative de la surface considéré pour différentes tolérances
imposées: les quadrilatères définis chacun par ses pôles P(0, 0), P(0, m), P(n, m), P(n, 0)
respectifs, représentent les facettes ou carreaux de surfaces subdivisés successivement en
fonction des tolérances prescrites. La figure IV.4 représente un agrandissement de la zone
indiquée dans la figure IV.3 à la droite (encadré).
Figure IV.3 : Intersection « carreau surface/plan de coupe » pour des tolérances de 10mm , 1mm et
0.01mm [31].
En effet, on assimile les carreaux de surfaces à des quadrilatères [ Pn,m ] formés par leurs
pôles respectifs P(0, 0), P(0, m), P(n, m), P(n, 0) , tels que les positionnements «
84
Chapitre IV Application : Génération de trajectoires d’outils
Figure IV.5 : Intersection « plan/carreau de surface subdivisé » (Plan de coupe [P] en trais
pointillés).
85
Chapitre IV Application : Génération de trajectoires d’outils
Entrées
[ P] : Plan de coupe définit par a, b, c, d , tel que
p ( x, y, z ) ∈ [ P ] ⇒ ax + by + bz + d = 0
Configuration= Configuration 1
rapport au plan [ P ]
Configuration= Configuration 2
Configuration= Configuration 3
Si pi situent d’un même coté par
rapport au plan [ P ] Si d0 ≡ 0, d1 > tol , d 2 > tol , d3 ≡ 0
p1s = pi ;
p2 s = pi +1 ;
86
Chapitre IV Application : Génération de trajectoires d’outils
Pour la génération de trajectoires d’outils dans le cas particulier des opérations de fraisage
par contournage de surfaces gauches en utilisant la technique des plans de niveaux [30, 31], on
doit s’affranchir des étapes suivantes:
• Recherche de l’ensemble des segments de droites approximant la courbe l’intersection « plan
de coupe/surface à usiner » (figure IV.7)
• Construction et orientation des contours d’intersection par chaînage des segments,
• Calcul et traitement des offsets (élimination des boucles intra et extra -contour, traitement
des singularités,…).
Les figures IV.7, IV.8 ci-dessous illustrent quelques résultats obtenus sur de surface de Bézier
rationnelle, basé sur l’approche proposée par [32].
Figure IV.7 : Courbes (contours) d’intersection déterminées par chaînage des segments d’intersection
issus de la subdivision récursive auto-adaptative, à droite : détail de l’encadré.
Figure IV.8 : Courbes (contours) d’intersection obtenues après chaînage des segments d’intersections
pour deux plans de coupe différents.
87
Chapitre IV Application : Génération de trajectoires d’outils
IV.7 Conclusion
La réalisation des pièces de formes complexes sur une M.O.C.N passe par la génération de
trajectoires dans un logiciel de Fabrication Assistée par Ordinateur (FAO), a une exigence de
modèle géométrique de référence (ex. interpolation, modèle de Bézier, B-spline,…) et autres
choses comme la stratégie d’usinage et des données technologiques. Le fraisage par contournage
proposé dans ce chapitre est une de possibilités de réalisation des surfaces gauches.
88
Conclusion générale
V. Conclusion générale
Dans ce mémoire, nous avons abordé L’idée générale sur les courbes et les surfaces
paramétriques, spécialement, le modèle de Bézier et B-spline, la transition entre les deux
modèles, et arrêt chez quelques points pour les expliquer plus, nous avons construit des
programmes en MATLAB, sans oublier l’objectif principal de ce travail qui est la réduction de
degré des courbes gauches en vue à l’échange de données entre systèmes C.F.A.O. et se basant
sur une étude bibliographique, nous avons présenté des méthodes de réduction de degré faisant
des approximations raisonnables de façon à surmonter les inconvénients rencontrés dans le
processus de transmission de données entre systèmes de C.F.A.O.
Nous avons découvrit des principales méthodes utilisées pour la réduction de degré.
Actuellement, la démarche de réduction de degré est tendue vers une optimisation de réduction
de degré, c.-à-d le problème est comment rapprocher de façon optimale une courbe paramétrique
donnée par une courbe inférieure de degré dans une certaine limite d'erreur a surgi dans CAGD
[33, 34, 35,…]. Mais les méthodes citées dans ce document restent toujours les bases de
nouvelles méthodes proposées de réduction de degré par approximation des courbes de Bézier.
89
Bibliographie
Bibliographie
[2] A. Farid, “ Réduction de degré par Approximation des Courbes de Bézier Application à
l’Echange de Données entre Systèmes”, Mémoire de Magister, Université Boumerdès-
FSI-DPTMéca-CFAO-, 10-07-1999.
[3] M. Rémy, “Algorithmes pour la Synthèse d’Images et l’Animation 3D”, Dunod, Paris,
ISBN 2 10 049068 0, 2002, 2005.
[12] Y.Park and U.J.Chou. “The Error Analysis for Degree Reduction of Bézier Curves’’.
Computers Math. Applic. Vol 27 #12 (1994) 3.
[14] M. Eck, “Degree Reduction of Bézier Curves”. Computer Aided Geometric Design.
Volume 10. (1993), 240.
90
Bibliographie
[15] Isaac J. Schoenberg (1946), C. De Boor (1972-76), M.G. Cox (1972), R. Riesenfeld
(1973), Wolfgang Boehm (1980) ; “B-Splines’’, Conception Assisté par Ordinateur,
Université de Liège.
[19] E. Üstünda1 M.S. Çelebi1, “A B-Spline Curve Fitting Approach by Implementing the
Parameter Correction Terms”, 1Computational Science and Engineering, Informatics
Institute, Istanbul Technical University, Maslak 34469 Istanbul, Turkey, e-mail:
ustundag@be.itu.edu.tr, e-mail: mscelebi@itu.edu.tr.
[21] Y. Park, U.J. Choi and H.J Kimn, “Approximate Conversion of Bezier Curves”,
BULL. Austral. Math. SOC. 41A10 Vol. 51 (1995) [153-162].
[22] M.A. Watkins and A.J. Worsey, “Degree Reduction of Bézier Curves”, Computer
Aided Design, Vol 20, N°7 Sept 1988 pp 398-405.
[24] S. Marshall, J.G. Griffiths, “A Survey of Cutter Path Construction Techniques for
Milling Machines”, International Journal of Production Research, Vol.23, N`12, 1994.
[25] B.K. Choi, et R.B. Jerard, “Sculptured Surface Machining”. kluwer Academic, 1998.
[27] S.C. Park and B.K. Choi, “Uncut Free Pocketing Tool-paths Generation Using Pair-
wise Offset Algorithm”, Computer-aided Design , Vol.33, N° 10, pp. 739-746, 2001.
[28] Y.S. Suh, K.lee, “NC Milling Tool Path Generation for Arbitrary Pockets Defined by
Sculptured Surfaces”. Computer-Aided Design, Vol.26, N°3, 1994.
[29] I. Belaidi (1), A. Iloul (2), K. Mohammedi (1), G. Ishiomin (2), “Génération de
Trajectoires d’Outils : Une Approche Simplifiée pour Le calcul des Intersections de
Surfaces Subdivisées”, (1) Groupe CFAO -Productique, LMMC, Université, Boumerdès-
91
Bibliographie
35000 (Algérie), Idirbelaidi@ yahoo.fr (2) LMSP, ENSAM, CER-Paris, 151 Boulevard
de l’Hôpital-75013 Paris (France).
[31] C. Sang, “Park, Tool Path Generation for Z-constaint Coutour Machning”. CAD 35,
pp.27-36, 2003. Eng. Vol26/2, 1994.
[33] G.D. Chen, G.J. Wang∗, “Optimal Multi-degree Reduction of Bézier Curves with
Constraints of Endpoints Continuity”, State Key Laboratory of CAD&CG, Institute of
Computer Images and Graphics, Zhejiang University, Hangzhou 310027, China
[35] L. Lu11, G. Wang, “Optimal Multi-degree Reduction of Bézier Curves with G2-
Continuity”, Institute of Computer Graphics and Image Processing, Department of
Mathematics, Zhejiang University, Hangzhou 310027, China Received 22 November
2005; received in revised form 7 September 2006; accepted 16 September 2006,
Available online 30 October 2006.
92
Annexes
Annexe A
Courbe paramétrique
Les courbes sont créées à partir des points et des lignes. La position d’un point sur une
courbe est donnée par le paramètre t .
Barycentre
Soit O une origine, (n + 1) points Pi affectés des masses mi . Le barycentre des points Pi
affectés des masses mi est le point G défini par :
n n
OG. ∑ m = ∑ m .OP
i =0
i
i =0
i i
n n
On a aussi : ∑ m .GP = 0 où : ∑ m
i =0
i i
i =0
i ≠0
n n
On peut écrire aussi : G.∑ mi = ∑ mi .Pi
i=0 i=0
i
Annexes
Transformation affine
Soit E d , d = {2,3} , un espace affine ; Une transformation affine f de E d est une application
affine bijective de E d . Les transformations affines sont : Translations, rotations, transformation
d’échelle nommé aussi homothétie (pour plus d’informations voire [2]).
Isoparamétrique
Courbe issue d’un carreau, ayant initialement tous ses points à paramètres constants (t et u )
entre 0 et 1 ; quand t est constant u est variable et l’inverse est correcte. Les paramètres sont
ceux du carreau.
ii
Annexes
Annexe B
Matrice de Bézier
function B=Bern_stein(k)
B=zeros(k+1,k+1);
E=k:-1:0;
for n=k:-1:0;
if n~=0
for r=1:n
p1=[1];
for c=1:n
p1=conv(p1,[-1 1]);
end
end
p1;
s=E(n+1);
p2=Untitl(s);
p=conv(p1,p2);
N=gamma(k+1);
I=gamma(s+1);
NI=gamma((k-s)+1);
b=N/(I*NI);
B(:,s+1)=b*p;
else % Calcule de coeff. de derniere ligne de la matrice
p1=[1];
s=E(n+1);
p2=Untitl(s);
p=conv(p1,p2);
N=gamma(k+1);
I=gamma(s+1);
NI=gamma((k-s)+1);
b=N/(I*NI);
B(:,s+1)=b*p;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function T=Untitl(n); % calcul de t^i
for i=0:1:n
if i==0
T(:,i+1)=1;
else
T(:,i+1)=0;
end
end
Dessin d’une courbe de Bézier par algorithme de De Casteljau
function [abscissex,ordonneey]=Bezier_curve(x,y)
te=linspace(0,1);
temps=length(te);
abscissex=zeros(1,temps);
ordonneey=zeros(1,temps);
degre =length(x)-1
i=1; j=0;
s=zeros(i,1);
for t=linspace(0, 1)
[px,py]=De_Casteljau(x,y,t); %Algorithme de De_Casteljau pour une valeur
de t0
s=zeros(i,1);
j=numel(s);
i=j+1;
iii
Annexes
abscissex(1,j)=px;
ordonneey(1,j)=py;
end
clc
plot(x,y,abscissex,ordonneey) %dessiner la courbe de Bézier avec sa polygone
de contrôle
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [abscisse,ordonnee]=De_Casteljau(x,y,t)
n=length(x);
x0=zeros(n,n);
y0=zeros(n,n);
%lire les points de controle P(x,y);
for j=1:1:n
x0(j,1)=x(j);
y0(j,1)=y(j);
end
%iterations barycentrique;
for i=2:1:n+1
for j=1:1:n-i+1
x0(j,i)=(1-t)*x0(j,i-1)+t*x0(j+1,i-1);
y0(j,i)=(1-t)*y0(j,i-1)+t*y0(j+1,i-1);
end
end
abscisse=x0(1,n);
ordonnee=y0(1,n);
Raccord C0 de deux courbes de Bézier
%% raccord C0 de deux courbes de Bézier
clear all; close all;
np1=5;
XP1=zeros(np1,1);YP1=zeros(np1,1);
XP1=[ 0. , 1. , 2. , 3. , 3.5 ] ;
YP1=[ 0. , 2.5 , 3. , 1.5 , 0. ] ;
np2=4;
XP2=zeros(np2,1);YP2=zeros(np2,1);
XP2=[ 3.5, 3. , 5. , 6. ] ;
YP2=[ 0. , -2. , -4. , 0. ] ;
% les courbes de Bézier
T=[0:0.05:1.];
[X1,Y1]=cbezier(T,XP1,YP1);
[X2,Y2]=cbezier(T,XP2,YP2);
nf=1;
figure(nf)
hold on
xmin1=min(XP1);xmax1=max(XP1);
ymin1=min(YP1);ymax1=max(YP1);
xmin2=min(XP2);xmax2=max(XP2);
ymin2=min(YP2);ymax2=max(YP2);
xmin=min(xmin1,xmin2)-0.75;xmax=max(xmax1,xmax2)+0.75;
ymin=min(ymin1,ymin2)-0.75;ymax=max(ymax1,ymax2)+0.75;
axis([xmin,xmax,ymin,ymax]);
plot(X1,Y1,'b',XP1,YP1,'b--')
plot(X2,Y2,'r',XP2,YP2,'r--')
for k=1:np1
kk=k-1;
char=int2str(kk);
P=strcat('P',char);
epsx=0.1;epsy=0.2;
if (k==1) epsx=0.; epsy=-0.2; end
if (k==np1) epsx=0.2; epsy=0.; end
text(XP1(k)+epsx,YP1(k)+epsy,P);
end
for k=1:np2
iv
Annexes
kk=k-1;
char=int2str(kk);
P=strcat('P''',char);
epsx=-0.4;epsy=-.2;
if (k==1) epsx=-0.4; epsy=0.; end
if (k==np2) epsx=0.1; epsy=0.; end
text(XP2(k)+epsx,YP2(k)+epsy,P);
end
% les vecteurs tangents
plot(XP1(np1-1:np1),YP1(np1-1:np1),'b')
plot(XP2(1:2),YP2(1:2),'r')
title('Raccord C0 de deux courbes');
hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [X,Y]=cbezier(T,XP,YP);
n=size(T,2); %% n = nombre de points de l'échantillonage
X=zeros(n,1);Y=zeros(n,1);
for k=1:n
t=T(k);
[x,y]=casteljau(t,XP,YP);
X(k)=x;Y(k)=y;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [x,y]=casteljau(t,XP,YP)
m=size(XP,2)-1; %% m = nombre de points de contrôle
xx=XP;yy=YP;
for kk=1:m
xxx=xx;
yyy=yy;
for k=kk:m
xx(k+1)=(1-t)*xxx(k)+t*xxx(k+1);
yy(k+1)=(1-t)*yyy(k)+t*yyy(k+1);
end
end
x=xx(m+1);y=yy(m+1);
Programme de dessin d’une B-spline de degré p
clear % B-spline
T = [0 0 0 0 1 1 2 2 2 2];
X = [0 1 2 2.5 3 4]; Y = [0 3 0 0 3 0];
p = 3;
n = length(T)-1;
t = [T(p+1):0.001:T(n-p+1)-0.001];
for i=0:n-p-1
B(i+1,:) = b(t,T,i,p);
end
plot(X*B,Y*B ,'r',X,Y,'--')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function u = b(t,T,j,p)
i = j+1;
if p==0
u = (t>= T(i) & t < T(i+p+1)); return
end
u = zeros(size(t));
if T(i) ~= T(i+p)
u = u + ((t-T(i)) / (T(i+p) -T(i))) .* b(t,T,j,p-1);
end
if T(i+1) ~= T(i+p+1)
u = u + ((T(i+p+1)-t) ./ (T(i+p+1) -T(i+1))) .* b(t,T,j+1,p-1);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Surface de Bézier par algorithme de De Boor - Coox.
v
Annexes
m=n1*n1*2;
TRI=zeros(m,3);
for k1=1:n1
for k2=1:n1
k=k1+(k2-1)*n1;
kk=k1+(k2-1)*n;
%% premier triangle
TRI(2*k-1,1)=kk;
TRI(2*k-1,2)=kk+1;
TRI(2*k-1,3)=kk+1+n;
%% second triangle
TRI(2*k,1)=kk;
TRI(2*k,2)=kk+n;
TRI(2*k,3)=kk+n+1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [x,y,z]=coox(t1,t2,XP,YP,ZP)
%%
%% Construction d’un point d’une surface de Bézier
%% selon l’algorithme de De Boor - Coox
%%
np1=size(XP,1) ;np2=size(XP,2) ;
xx1=zeros(np1,1) ;yy1=zeros(np1,1) ;zz1=zeros(np1,1) ;
for k1=1:np1
xx2=zeros(np2,1) ;yy2=zeros(np2,1) ;zz2=zeros(np2,1) ;
for k2=1:np2
xx2(k2)=XP(k1,k2) ;yy2(k2)=YP(k1,k2) ;zz2(k2)=ZP(k1,k2) ;
end
[x,y,z]=cast3d(t2,xx2,yy2,zz2) ;
xx1(k1)=x ;yy1(k1)=y ;zz1(k1)=z ;
end
[x,y,z]=cast3d(t1,xx1,yy1,zz1) ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [x1,y1,z1]=cast3d(t,XP,YP,ZP)
m=size(XP,1)-1;
x=XP;y=YP;z=ZP;
for i=1:m
x2=x;y2=y;z2=z;
for k=i:m
x(k+1)=(1-t)*x2(k)+t*x2(k+1);
y(k+1)=(1-t)*y2(k)+t*y2(k+1);
z(k+1)=(1-t)*z2(k)+t*z2(k+1);
end
end
x1=x(m+1);y1=y(m+1);z1=z(m+1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function ubezier(TRI,X,Y,Z,XP,YP,ZP,pchar,color)
tcolor=strcat(color,'--');
% tracé de la surface
trisurf(TRI,X,Y,Z)
% tracé des points
texte=1;
if (texte==1)
np1=size(XP,1);np2=size(XP,2);
for k1=1:np1
kk1=k1-1;
char1=int2str(kk1);
PP=strcat(pchar,char1);
for k2=1:np2
kk2=k2-1;
char2=int2str(kk2);
vii
Annexes
P=strcat(PP,char2);
epsx=0.05;epsy=0.05;;epsz=0.05;
text(XP(k1,k2)+epsx,YP(k1,k2)+epsy,ZP(k1,k2)+epsz,P);
end
end
end
Surface de Bézier par produit matriciel
% function SupBezier(x,y,z)
clear all;
x=[0 0 0 0 0 0;
1 1 1 1 1 1;
2 2 2 2 2 2;
3 3 3 3 3 3;
4 4 4 4 4 4;
5 5 5 5 5 5];
y=[0 1 2 3 4 5;
0 1 2 3 4 5;
0 1 2 3 4 5;
0 1 2 3 4 5;
0 1 2 3 4 5;
0 1 2 3 4 5];
z=[1 2 3 3 2 1;
2 3 4 4 3 2;
3 4 5 5 4 3;
3 4 5 5 4 3;
2 3 4 4 3 2;
1 2 3 3 2 1];
ptos=zeros(size(x,1),size(x,2),3);
ptos(:,:,1)=x;
ptos(:,:,2)=y;
ptos(:,:,3)=z;
[m,n,o]=size(ptos);
for k=1:3
b(:,:,k)=ti(m-1)'*mij(m-1)'*ptos(:,:,k)...
*mij(n-1)*ti(n-1);
end
surf(b(:,:,1),b(:,:,2),b(:,:,3)),
hold on,
mesh(ptos(:,:,1),ptos(:,:,2),ptos(:,:,3)),
xlabel('x')
ylabel('y')
zlabel('z')
hidden off
plot3(ptos(:,:,1),ptos(:,:,2),ptos(:,:,3),'bp')
rotate3d
% end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function T=ti(n)
m=1;
t=0:0.05:m; % step=0.05
T=[];
for i=0:n
T= [T;t.^i];
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function M = mij(n)
for i=0:n
for j=0:n
M(i+1,j+1)=(-1)^(j+i)*binom(n,j)*binom(j,i);
end
end
M=M(1:n+1,1:n+1);
viii
Annexes
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function c=binom(n,i)
if i==n | i==0
c=1;
elseif i<n & i>=0
c = prod ([1:n])/( prod([1:i])*prod([1:n-i]));
else
c=0;
end
Subdivision d’une courbe de Bézier par algirithme de De Casteljau
clear ; %% Subdivision.m
x=[0 1 3 4.6 6];
y=[0 5 5 3 0];
t=0.5; % valeur de paramètre de subdivision t0
[abscisse,ordonnee,x1,y1,x2,y2]=De_Casteljau(x,y,t);
hold on;
[a,b]=Bezier_curve(x,y);
[c,d]=Bezier_curve(x1,y1);
[e,f]=Bezier_curve(x2,y2);
xlabel('abscisse')
ylabel('ordonnée')
title('Subdivision des courbes de Bézier')
hold off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [abscisse,ordonnee,x1,y1,x2,y2]=De_Casteljau(x,y,t)
n=length(x);
x0=zeros(n,n);
y0=zeros(n,n);
%lire les points de controle P(x,y);
for j=1:1:n
x0(j,1)=x(j);
y0(j,1)=y(j);
end
%iterations barycentrique;
for i=2:1:n+1
for j=1:1:n-i+1
x0(j,i)=(1-t)*x0(j,i-1)+t*x0(j+1,i-1);
y0(j,i)=(1-t)*y0(j,i-1)+t*y0(j+1,i-1);
end
end
x1=x0(1,:);
y1=y0(1,:);
r=0;
for k=1:1:n
c1(1,k)=x0(k,n-r);
c2(1,k)=y0(k,n-r);
r=r+1;
end
x2=c1;
y2=c2;
abscisse=x0(1,n);
ordonnee=y0(1,n);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [abscissex,ordonneey]=Bezier_curve(x,y)
te=linspace(0,1);
temps=length(te);
abscissex=zeros(1,temps);
ordonneey=zeros(1,temps);
degre =length(x)-1
i=1; j=0;
s=zeros(i,1);
for t=linspace(0, 1)
ix
Annexes
[px,py]=De_Casteljau(x,y,t);
s=zeros(i,1);
j=numel(s);
i=j+1;
abscissex(1,j)=px;
ordonneey(1,j)=py;
end
%dessiner la courbe de Bézier avec sa polygone de controle
plot(x,y,abscissex,ordonneey)
Réduction de degré des courbes de Bézier par méthode de Farin
clear; % r_Farin.m
x=[0 2 3 5 7 5 10];
y=[0 6 0 4 1 5 6];
[Rx,Ry]= r_duction (x,y);
[Sx,Sy]=r_ducts(x,y);
n=length(x)-1;
for i=0:1:n-1
if i < n/2
lambda =0;
Qx(i+1)=(1-lambda)*Rx(i+1)+lambda*Sx(i+1);
Qy(i+1)=(1-lambda)*Ry(i+1)+lambda*Sy(i+1);
elseif i > n/2
lambda =1;
Qx(i+1)=(1-lambda)*Rx(i+1)+lambda*Sx(i+1);
Qy(i+1)=(1-lambda)*Ry(i+1)+lambda*Sy(i+1);
else
lambda =1/2;
Qx(i+1)=(1-lambda)*Rx(i+1)+lambda*Sx(i+1);
Qy(i+1)=(1-lambda)*Ry(i+1)+lambda*Sy(i+1);
end
end
Qx=Qx;
Qy=Qy;
Q1=[x;y];
Q=[Qx;Qy];
m =500;
C1= c_bezier (Q1 ,m);
C= c_bezier (Q ,m);
hold on;
plot (C1 (1 ,:) ,C1 (2 ,:) ,'y',Q1 (1 ,:) ,Q1 (2 ,:) ,'.-k',C (1 ,:) ,C (2
,:) ,'r',Q (1 ,:) ,Q (2 ,:) ,'.-')
%plot (C (1 ,:) ,C (2 ,:) ,'r',Q (1 ,:) ,Q (2 ,:) ,'.-')
xlabel ( 'x ','Fontsize' ,14)
ylabel ( 'y ','Fontsize' ,14)
title ( ' reduction _ de _ degré _ de _ courbe _ de _ Bezier _ par _ methode
_ de _ Farine ','Fontsize' ,14)
hold off;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Rx,Ry]= r_duction (px,py)
n=length(px)-1;
degree=n-1;
Rx(1)=px(1);
Ry(1)=py(1);
for i=1:n-1
Rx(i+1)=n/(n-i)*px(i+1)-i/(n-i)*Rx(i-1+1);
Ry(i+1)=n/(n-i)*py(i+1)-i/(n-i)*Ry(i-1+1);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Sx,Sy]=r_ducts(px,py)
qx=px(length(px):-1:1);
qy=py(length(py):-1:1);
[Rx,Ry]= r_duction (qx,qy);
x
Annexes
Sx=Rx(length(Rx):-1:1);
Sy=Ry(length(Ry):-1:1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function C= c_bezier (pc ,m)
% m points de la courbe a determiner , N=n +1 points de controle
t =0:1/(m -1) :1;
N= length( pc (1 ,:) );
dim = length ( pc (: ,1) );
tt = ones (dim ,1) *t;
for i =1: N
b (1: dim ,1:m ,i)= pc (: ,i)* ones (1 ,m);
end ;
for r =1: N -1
bb =b;
for i =1: N -r
b (: ,: ,i) =(1 - tt ) .* bb (: ,: ,i)+ tt .* bb (: ,: ,i +1) ;
end
end
C=b (: ,: ,1) ;
Réduction de degré par méthode de Forrest
clear
x=[0 2 5 7];
y=[0 5 5.5 0];
[Rx,Ry]= r_duction (x,y);
[Sx,Sy]=r_ducts(x,y);
n=length(x)-1
d= n/2;
d=round(d);
if n==2*d
for i=0:1:((n-2)/2)
Qx(i+1)= Rx(i+1);
Qy(i+1)= Ry(i+1);
end
for i=(n/2):1:n-1
Qx(i+1)= Sx(i+1);
Qy(i+1)= Sy(i+1);
end
else
for i=0:1:((n-1)/2)
Qx(i+1)= Rx(i+1);
Qy(i+1)= Ry(i+1);
end
for i=((n+1)/2):1:n-1
Qx(i+1)= Sx(i+1);
Qy(i+1)= Sy(i+1);
end
Qx((n-1)/2+1)= (Rx((n-1)/2+1)+Sx((n-1)/2+1))/2;
Qy((n-1)/2+1)= (Ry((n-1)/2+1)+Sy((n-1)/2+1))/2;
end
Qx=Qx;
Qy=Qy;
Q1=[x;y];
Q=[Qx;Qy];
m =500;
C1= c_bezier (Q1 ,m);
C= c_bezier (Q ,m);
plot (C1 (1 ,:) ,C1 (2 ,:) ,'y',Q1 (1 ,:) ,Q1 (2 ,:) ,'.-k',C (1 ,:) ,C (2
,:) ,'r',Q (1 ,:) ,Q (2 ,:) ,'.-')
xlabel ( 'x ','Fontsize' ,14)
ylabel ( 'y ','Fontsize' ,14)
title ( ' reduction _ de _ degré _ de _ courbe _ de _ Bezier _ par _ methode
_ de _ Forrest ','Fontsize' ,14)
xi
Résumé
Résumé
Historiquement, la conception géométrique assistée par ordinateur (CGAO) fut l’un des
premiers domaines à utiliser les courbes et surfaces paramétriques pour la modélisation des
objets et la représentation graphique. Dans ce travail, premièrement, nous avons vue un aperçu et
des rappels préliminaires contenant les concepts fondamentaux des courbes et surfaces de
modèle de Bézier et B-splines, deuxièmement, nous avons pris en compte l’objectif principal de
ce travail qui est de dévoiler la boîte noire du problème de réduction de degré des courbes de
Bézier par approximation et, enfin, nous avons présenté une application (usinage des surfaces
complexes) pour évider une des utilisations des courbes de Bézier dans C.F.AO.
Mots clés : courbes et surfaces paramétriques, modèle de Bézier et B-spline, réduction de
degré, approximation, surfaces complexes.
Abstract
Historically, the Computer Aided Geometric Design (CAGD) was one of the first fields to
use the parametric curves and surfaces for modeling the objects and the graphic representation.
In this work, firstly, we saw an outline and preliminary recalls containing the fundamental
concepts of the curves and surfaces of Bézier model and B-splines, secondly, we took into
account the main aim of this work which is to reveal the block box of degree reduction problem
of Bézier curves by approximation and, finally, we presented an application (machining of
complex surfaces) to hollow out one of the uses of Bézier curves in C.F.AO (CADCAM).
Key words: parametric curves and surfaces, Bézier model and B-spline, degree reduction,
approximation, complex surfaces.
ب آن أوا ت ا ام ات و اح ا# ا$%*ر( ا '& ا
ت و1 2
'& ا13 ات. أو رأ( و *آ،# ها ا$6 .$+, و ا ا-ا./ات ا
,1# اي ه ا ;ع ا# ها ا$2ف ا%ر ا, > ا#
+? أ+9 ، B-splines وBézier ذج+ اح
K أLM (ةE# اح اI'*) E,* F (% ا$6 و،
رE
Bézier در تA/* BC اداء
.(
ب# ل ا '& وا'> ا$6 Bézier ت ت# ا
اح،
رE ا، درA/* ، B-splines وBézier ذج+ ،
ات و اح ا:K /ت ا1Bا
.ةE#ا