Courbes de Bézier cubiques
Page 1 sur 1
Courbes de Bézier cubiques
- Code:
rem ============================================================================
rem Les Courbes de Bézier cubiques
rem REF : https://fr.wikipedia.org/wiki/Courbe_de_B%C3%A9zier
rem ============================================================================
rem Une courbe de Bézier cubique est définie par quatres points P0, P1, P2 et P3
rem de coordonnées (x0,y0), (x1,y1), (x2,y2) et (x3,y3)
rem P0 et P3 correspondent aux points des extrémités ou nœuds de la courbe.
rem P1 et P2 correspondent aux points de contrôle ou poignées, chacun apparié
rem avec l un des points terminaux.
rem Les points de contrôle ont l utile propriété suivante :
rem Une ligne commençant à une extrémité de la courbe et se terminant au point de
rem contrôle correspondant est tangente à la courbe au point terminal.
rem Ceci permet la jonction douce de multiples courbes de Bézier.
rem La courbe se trace en partant du point P0, en se dirigeant vers le point P1
rem et en arrivant au point P3 selon la direction P2-P3.
rem La courbe ne passe pas nécessairement par P1 ni par P2.
rem ============================================================================
' ------------------------------------------------------------------------------
' Les courbes de Bézier sont utilisées en conception graphique
' ------------------------------------------------------------------------------
rem ============================================================================
' Exemples des courbes de Bézier
picture 10 : full_space 10 : 2d_target_is 10 : color 10,0,0,0
2d_pen_color 255,000,000 : Cubic_Bezier_Curve(120,20,20,100,200,100,320,20) : pause 1000 : color 10,0,0,0
2d_pen_color 255,255,000 : Cubic_Bezier_Curve(300,200,200,100,400,200,350,100) : pause 1000 : color 10,0,0,0
2d_pen_color 000,255,000 : Cubic_Bezier_Curve(100,400,200,200,300,400,550,220) : pause 1000 : color 10,0,0,0
2d_pen_color 000,255,255 : Cubic_Bezier_Curve(100,350,500,50,80,50,400,250) : pause 1000 : color 10,0,0,0
2d_pen_color 255,000,255 : Cubic_Bezier_Curve(100,400,200,200,400,220,450,350) : pause 1000 : color 10,0,0,0
2d_pen_color 255,255,255 : Cubic_Bezier_Curve(114,165,208,444,360,165,114,165) : pause 1000 : color 10,0,0,0
' Dessiner une soucoupe avec les courbes de Bézier
Draw_Saucer()
print_target_is 10 : font_size 10,16 : print_locate 100,400 : print "That's All folks !!"
end
rem ============================================================================
rem &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
rem ============================================================================
' Tracé d'une courbe de Bézier cubique
SUB Cubic_Bezier_Curve(x0,y0,x1,y1,x2,y2,x3,y3)
dim_local np : np = 100 : ' nombre de points interpolés sur la courbe, plus ce nombre est grand, plus la courbe sera lisse
dim_local bezier(np,2)
dim_local i,t,xp0,xp1,xp2,xp3,yp0,yp1,yp2,yp3
2d_poly_from x0,y0
for i = 0 to np
t = i/np
xp0 = (1-t)*(1-t)*(1-t)*x0 : yp0 = (1-t)*(1-t)*(1-t)*y0
xp1 = 3*(1-t)*(1-t)*t*x1 : yp1 = 3*(1-t)*(1-t)*t*y1
xp2 = 3*(1-t)*t*t*x2 : yp2 = 3*(1-t)*t*t*y2
xp3 = t*t*t*x3 : yp3 = t*t*t*y3
bezier(i,0) = xp0 + xp1 + xp2 + xp3 : bezier(i,1) = yp0 + yp1 + yp2 + yp3
2d_poly_to bezier(i,0),bezier(i,1)
next i
END_SUB
rem ============================================================================
' Comme exemple :
' Dessiner une soucoupe avec les courbes de Bézier
SUB Draw_Saucer()
dim_local p : p = 1000 : ' Pause pour visualiser les différentes courbes de Bézier
' Draw saucer bottom.
2d_pen_color 220,100,0
Cubic_Bezier_Curve(284,169,284,197,229,220,160,220) : pause p
Cubic_Bezier_Curve(160,220,91,220,36,197,36,169) : pause p
Cubic_Bezier_Curve(36,169,36,141,91,118,160,118) : pause p
Cubic_Bezier_Curve(160,118,229,118,284,141,284,169) : pause p
2d_flood 220,200,220,100,0
' Draw saucer top.
2d_pen_color 50,190,0
Cubic_Bezier_Curve(223,120,223,133,194,143,159,143) : pause p
Cubic_Bezier_Curve(159,143,124, 143, 96, 133, 96, 120) : pause p
Cubic_Bezier_Curve(96,129,96, 108, 124, 97, 159, 97) : pause p
Cubic_Bezier_Curve(159,97,194, 97, 223, 108, 223, 120) : pause p
2d_flood 140,128,50,190,0 : 2d_flood 162,108,51,190,0
END_SUB
rem ============================================================================
Sujets similaires
» Les Courbes de Bézier cubiques
» Courbes polaires
» Courbes en coordonnées polaires
» Traceur de courbes représentatives des fonctions y = f(x)
» DES MATHS POUR L'ESTHETIQUE DES COURBES
» Courbes polaires
» Courbes en coordonnées polaires
» Traceur de courbes représentatives des fonctions y = f(x)
» DES MATHS POUR L'ESTHETIQUE DES COURBES
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Lun 1 Jan - 0:25 par Papydall-Admin
» A ceux qui célèbre Noël, bonnes fêtes
Dim 24 Déc - 10:49 par Papydall-Admin
» Joyeux Noël et Bonne Année
Ven 8 Déc - 1:34 par Papydall-Admin
» Planets of the Solar System : Tilts and Spins
Lun 20 Mar - 15:43 par Papydall-Admin
» Bonne Année 2023
Sam 31 Déc - 1:39 par Papydall-Admin
» Fractals - Mandelbrot
Ven 21 Aoû - 22:51 par Papydall-Admin
» Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...
Mer 21 Nov - 1:08 par Papydall-Admin
» Balises {USER...}
Lun 19 Nov - 22:12 par Papydall-Admin
» Useful Dog
Ven 6 Avr - 14:25 par Papydall-Admin