Forum de Programmation en langage PANORAMIC
Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Mots-clés

Derniers sujets
»  Animations : Livres et leçons sur le français
Dim 21 Jan - 2:04 par Admin

» Animations FLASH
Lun 1 Jan - 13:01 par Admin

» Bonne Année 2018
Ven 29 Déc - 0:48 par Admin

» Automate cellulaire : simulation de feu de forêt
Sam 9 Déc - 2:56 par Admin

»  Exécution des fichiers CPL
Mar 28 Nov - 19:18 par Admin

» Quelques fonctions de la user32.dll
Sam 25 Nov - 1:43 par Admin

» Copier vers une FORM définie l’image de fond du bureau.
Ven 24 Nov - 2:38 par Admin

»  Capture d’écran de Windows
Ven 17 Nov - 0:27 par Admin

»  Courbes de Bézier cubiques
Mer 8 Nov - 2:28 par Admin

Février 2018
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
262728    

Calendrier Calendrier


Courbes de Bézier cubiques

Aller en bas

Courbes de Bézier cubiques

Message par Admin le Mer 8 Nov - 2:28

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 ============================================================================

_________________
Invité, merci d'être passé par ici.
avatar
Admin
Admin

Messages : 78
Date d'inscription : 08/09/2015
Age : 67
Localisation : MOKNINE (Tunisie)

Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum