Forum de Programmation en langage PANORAMIC


Rejoignez le forum, c’est rapide et facile

Forum de Programmation en langage PANORAMIC
Forum de Programmation en langage PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Derniers sujets
» Bonne année 2024
 Courbes de Bézier cubiques EmptyLun 1 Jan - 0:25 par Papydall-Admin

» A ceux qui célèbre Noël, bonnes fêtes
 Courbes de Bézier cubiques EmptyDim 24 Déc - 10:49 par Papydall-Admin

» Joyeux Noël et Bonne Année
 Courbes de Bézier cubiques EmptyVen 8 Déc - 1:34 par Papydall-Admin

» Planets of the Solar System : Tilts and Spins
 Courbes de Bézier cubiques EmptyLun 20 Mar - 15:43 par Papydall-Admin

» Bonne Année 2023
 Courbes de Bézier cubiques EmptySam 31 Déc - 1:39 par Papydall-Admin

» Fractals - Mandelbrot
 Courbes de Bézier cubiques EmptyVen 21 Aoû - 22:51 par Papydall-Admin

» Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...
 Courbes de Bézier cubiques EmptyMer 21 Nov - 1:08 par Papydall-Admin

» Balises {USER...}
 Courbes de Bézier cubiques EmptyLun 19 Nov - 22:12 par Papydall-Admin

» Useful Dog
 Courbes de Bézier cubiques EmptyVen 6 Avr - 14:25 par Papydall-Admin

Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     

Calendrier Calendrier

Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

Courbes de Bézier cubiques

Aller en bas

 Courbes de Bézier cubiques Empty Courbes de Bézier cubiques

Message par Papydall-Admin 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 ============================================================================
Papydall-Admin
Papydall-Admin
Admin

Messages : 93
Réputation : 0
Date d'inscription : 08/09/2015
Age : 73
Localisation : MOKNINE (Tunisie)

https://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