FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» SineCube
Les Courbes de Bézier cubiques Emptypar Marc Hier à 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Les Courbes de Bézier cubiques Emptypar Marc Hier à 12:22

» Philharmusique
Les Courbes de Bézier cubiques Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Les Courbes de Bézier cubiques Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Les Courbes de Bézier cubiques Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Les Courbes de Bézier cubiques Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Les Courbes de Bézier cubiques Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Les Courbes de Bézier cubiques Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Les Courbes de Bézier cubiques Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Les Courbes de Bézier cubiques Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Les Courbes de Bézier cubiques Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Les Courbes de Bézier cubiques Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Les Courbes de Bézier cubiques Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Les Courbes de Bézier cubiques Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Les Courbes de Bézier cubiques Emptypar leclode Sam 27 Avr 2024 - 17:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

 

 Les Courbes de Bézier cubiques

Aller en bas 
3 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Les Courbes de Bézier cubiques Empty
MessageSujet: Les Courbes de Bézier cubiques   Les Courbes de Bézier cubiques EmptyMar 1 Mar 2016 - 19:17

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


@Jean_Debord
Je pense qu’une commande Cubic_Bezier_Curve(x0,y0,x1,y1,x2,y2,x3,y3) dans le langage FBPano sera fort utile, d’autant plus que son codage est simple.
Qu’en penses-tu ?
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Les Courbes de Bézier cubiques Empty
MessageSujet: Re: Les Courbes de Bézier cubiques   Les Courbes de Bézier cubiques EmptyMar 1 Mar 2016 - 20:43

Il faut savoir les mettre en oeuvre en pratique mais oui, c'est très utilisé en graphismes.
Le programme est nickel comme d'hab sinon  Wink


Dernière édition par Jicehel le Mar 1 Mar 2016 - 21:51, édité 1 fois
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Les Courbes de Bézier cubiques Empty
MessageSujet: Re: Les Courbes de Bézier cubiques   Les Courbes de Bézier cubiques EmptyMar 1 Mar 2016 - 21:44

Merci pour le retour Jicehel.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Les Courbes de Bézier cubiques Empty
MessageSujet: Re: Les Courbes de Bézier cubiques   Les Courbes de Bézier cubiques EmptyMer 2 Mar 2016 - 9:13

papydall a écrit:

@Jean_Debord
Je pense qu’une commande Cubic_Bezier_Curve(x0,y0,x1,y1,x2,y2,x3,y3) dans le langage FBPano sera fort utile, d’autant plus que son codage est simple.
Qu’en penses-tu ?

Oui ce serait très bien, soit dans le langage lui-même, soit dans une bibliothèque externe.

J'ai déjà adapté tes routines de polygones et celles de Klaus (voir exemples\lib\polygones.bas).
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Les Courbes de Bézier cubiques Empty
MessageSujet: Re: Les Courbes de Bézier cubiques   Les Courbes de Bézier cubiques EmptyJeu 3 Mar 2016 - 10:44

Voici donc une procédure en FBPano, pour intégration dans la bibliothèque polygones (qui va devoir changer de nom...)  
 
Code:
  
   sub Bezier_Cube (x0, y0, x1, y1, x2, y2, x3, y3, n%, x(), y())
        
        dim i%, t, t2, t3, u, u2, u3, a, b

        for i = 0 to n
            t = i / n
            t2 = t * t
            t3 = t2 * t
            u = 1 - t
            u2 = u * u
            u3 = u2 * u
            a = 3 * u2 * t
            b = 3 * u * t2
            x(i) = u3 * x0 + a * x1 + b * x2 + t3 * x3
            y(i) = u3 * y0 + a * y1 + b * y2 + t3 * y3
        next i
    end_sub
   

Différences par rapport à la version PANORAMIC :

- la procédure ne trace rien ; le programme appelant reçoit les coordonnées des points dans les tableaux x() et y() ; ensuite il trace ces points comme il veut Smile

- on utilise des variables intermédiaires pour réduire le nombre d'opérations à effectuer
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Les Courbes de Bézier cubiques Empty
MessageSujet: Re: Les Courbes de Bézier cubiques   Les Courbes de Bézier cubiques EmptyJeu 3 Mar 2016 - 13:17

Salut Jean_Debord.
Merci pour cette sub.
Code:

for i = 0 to n
     t = i / n
           ….
C’est
Code:

for i = 0 to n%
    t = i / n%
          ….
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Les Courbes de Bézier cubiques Empty
MessageSujet: Re: Les Courbes de Bézier cubiques   Les Courbes de Bézier cubiques EmptyVen 4 Mar 2016 - 8:49

Dans FBPano, les suffixes (%, $ etc.) ne sont indispensables que dans les déclarations de variables ou dans la définition des procédures. Ensuite on peut les omettre. Si on les met, le traducteur les supprimera.
Donc je préfère ne pas les mettre, et écrire "for i" p.ex. plutôt que "for i% ..."
Mais c'est une affaire de goût...
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Les Courbes de Bézier cubiques Empty
MessageSujet: Re: Les Courbes de Bézier cubiques   Les Courbes de Bézier cubiques EmptyVen 4 Mar 2016 - 14:50

Thank you!
J'ai compris.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé





Les Courbes de Bézier cubiques Empty
MessageSujet: Re: Les Courbes de Bézier cubiques   Les Courbes de Bézier cubiques Empty

Revenir en haut Aller en bas
 
Les Courbes de Bézier cubiques
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
»  Les Courbes de Bézier cubiques
» Un TRISKELL en courbes !
» Courbes de Bézier cubiques
» numérique : Courbe de Bézier
» Animation de courbe de Bézier cubique

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: