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
» Form(résolu)
Animation de courbe de Bézier cubique Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Animation de courbe de Bézier cubique Emptypar Marc Hier à 11:42

» Bataille navale SM
Animation de courbe de Bézier cubique Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Une calculatrice en une ligne de programme
Animation de courbe de Bézier cubique Emptypar jean_debord Ven 26 Avr 2024 - 8:01

» Gestion d'un système client-serveur.
Animation de courbe de Bézier cubique Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Animation de courbe de Bézier cubique Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Animation de courbe de Bézier cubique Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Animation de courbe de Bézier cubique Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Animation de courbe de Bézier cubique Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Animation de courbe de Bézier cubique Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Animation de courbe de Bézier cubique Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Animation de courbe de Bézier cubique Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Animation de courbe de Bézier cubique Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Animation de courbe de Bézier cubique Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Animation de courbe de Bézier cubique Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le Deal du moment : -39%
Ordinateur portable ASUS Chromebook Vibe CX34 Flip
Voir le deal
399 €

 

 Animation de courbe de Bézier cubique

Aller en bas 
5 participants
AuteurMessage
papydall

papydall


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

Animation de courbe de Bézier cubique Empty
MessageSujet: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique EmptyMar 25 Aoû 2015 - 1:47

Animation de courbe de Bézier cubique 6235104zKcLM3sld3ut9XZkNVuUSC6Tb0 

Encore une animation.
Essayez avec ou sans la ligne 63
Code:

cls : ' Mettre le CLS en REM pour voir des belles images!


Voici le
Code:

rem ============================================================================
rem         Animation de courbe de Bézier cubique
rem                Par Papydall
rem ============================================================================

Init()
CreateInitpoint()
Anim()

end
rem ============================================================================
SUB Init()
    dim row(4,2), bezier(101,2)
    dim p1,p2,p3,jp1,jp2,jp3,incp1,incp2,incp3,q1,q2,q3,jq1,jq2,jq3,incq1,incq2,incq3
    p1 = 4 : p2 = 6 : p3 = 5  : jp1 = 0 : jp2 = 0 : jp3 = 0
    incp1 = 0.3 : incp2 = 0.3 : incp3 = 0.3
    q1 = 3 : q2 = 7 : q3 = 4  : jq1 = 0 : jq2 = 0 : jq3 = 0
    incq1 = 0.3 : incq2 = 0.3 : incq3 = 0.3
    width 0,800 : height 0,800: top 0,(screen_y - width(0))/2 : left 0,(screen_x -height(0))/2
    picture 10  : full_space 10 : 2d_target_is 10 : hide 10
    image 20
    caption 0,"<CLICK> pour arrêter ........"
END_SUB
rem ============================================================================
' D'abord nous créons 4 points de contrôle espacés également.
' Nous essayons de les mettre plus ou moins dans le même plan horizontal avec
' une compensation aléatoire du point initial.
rem ============================================================================
SUB CreateInitpoint()
    row(0,0) = 300                 : row(0,1) = 300
    row(1,0) = 300 + (rnd(060)-30) : row(1,1) = 270 + (rnd(060)-30)
    row(2,0) = 300 + (rnd(100)-50) : row(2,1) = 110 + (rnd(100)-50)
    row(3,0) = 300 - (rnd(150)-75) : row(3,1) = 200 + (rnd(150)-75)
END_SUB
rem ============================================================================
SUB Anim()
    repeat
         CreateInterpolated() : ' Interpoler la courbe de Bézier
         DrawCircleOnPath()   : ' Placer des cercles sur la courbe de Bézier
         JigglePoints()       : ' Changer légèrement les 4 points initiaux
         image_recopy()       : ' Pour un affichage sans clignotement
    until scancode <> 0
END_SUB
rem ============================================================================
' Interpoler la courbe
' Ici nous créons un ensemble à 100 éléments de points interpolés.
' Ceux-ci sont sur la courbe (spline) de Bézier
SUB CreateInterpolated()
    dim_local i,ix,x1,x2,x3,x4,y1,y2,y3,y4
    for i = 0 to 100
        ix = i/100
        x1 = (1-ix)*(1-ix)*(1-ix)*row(0,0) : y1 = (1-ix)*(1-ix)*(1-ix)*row(0,1)
        x2 = 3*(1-ix)*(1-ix)*ix*row(1,0)   : y2 = 3*(1-ix)*(1-ix)*ix*row(1,1)
        x3 = 3*(1-ix)*ix*ix*row(2,0)       : y3 = 3*(1-ix)*ix*ix*row(2,1)
        x4 = ix*ix*ix*row(3,0) : y4 = ix*ix*ix*row(3,1)
        bezier(i,0) = x1+x2+x3+x4 : bezier(i,1) = y1+y2+y3+y4
    next i
END_SUB
rem ============================================================================
' Créez les cercles de taille diminuante et le miroir
' Pour tous les points sur la courbe de Bézier définie par bezier(),
SUB DrawCircleonPath()
    dim_local i, outer,inner,surf,surf2
    cls : ' Mettre le CLS en REM pour voir des belles images!
    outer = 38
    for i = 0 to 100
        2d_fill_color 255,0,0 : 2d_pen_color 255,0,0
        outer = outer - 0.34 : surf  = 420 + (260-bezier(i,1))
        if surf > 350
           2d_circle bezier(i,0),420+(260-bezier(i,1)),outer
           2d_circle 420+(260-bezier(i,0)),420+(260-bezier(i,1)),outer
        end_if
        if outer < 2
            2d_fill_color 255,0,0 : 2d_pen_color 255,0,0 : inner = 1
        else
            2d_fill_color 164,164,164
            2d_pen_color 164,164,164 : inner = outer -1
        end_if
        if surf > 350
           2d_circle bezier(i,0),420+(260-bezier(i,1)),outer
           2d_circle 420+(260-bezier(i,0)),420+(260-bezier(i,1)),outer
        end_if
    next i
    outer = 38
    for i = 0 to 100
        2d_fill_color 255,0,0 : 2d_pen_color 255,0,0
        outer = outer - 0.34 : surf2 = bezier(i,1)
        if surf2 < 350
           2d_circle bezier(i,0),bezier(i,1),outer
           2d_circle 420+(260-bezier(i,0)),bezier(i,1),outer
        end_if
        if outer < 2
           2d_fill_color 255,0,0 : 2d_pen_color 255,0,0 : inner = 1
        else
           2d_fill_color 255,255,255 : 2d_pen_color 255,255,255 : inner = outer -1
        end_if
        if surf2 < 350
           2d_circle bezier(i,0),bezier(i,1),inner
           2d_circle 420+(260-bezier(i,0)),bezier(i,1),inner
        end_if
    next i
END_SUB
rem ============================================================================
' Compenser les points de contrôle pour donner une impression de mouvement
SUB JigglePoints()
    row(0,0) = 300 : row(0,1) = 300
    if jp1 > p1   then incp1 = -0.2
    if jp1 < 0-p1 then incp1 =  0.2
    if jp2 > p2   then incp2 = -0.2
    if jp2 < 0-p2 then incp2 =  0.2
    if jp3 > p3   then incp3 = -0.2
    if jp3 < 0-p3 then incp3 =  0.2

    jp1 = jp1 + incp1 : jp2  = jp2 + incp2 : jp3 = jp3 + incp3 / 2
    if jq1 > q1   then incq1 = -0.2
    if jq1 < 0-q1 then incq1 =  0.2
    if jq2 > q2   then incq2 = -0.2
    if jq2 < 0-q2 then incq2 =  0.2
    if jq3 > q3   then incq3 = -0.2
    if jq3 < 0-q3 then incq3 =  0.2

    jq1 = jq1 + incq1 : jq2 = jq2 + incq2 : jq3 = jq3 + incq3 / 2
    row(0,0) = row(0,0) - jp3 : row(0,1) = row(0,1) - jq3
    row(1,0) = row(1,0) - jp1 : row(1,1) = row(1,1) - jq1
    row(2,0) = row(2,0) - jp2 : row(2,1) = row(2,1) - jq2
    row(3,0) = row(3,0) - jp3 : row(3,1) = row(3,1) - jq3
END_SUB
rem ============================================================================
' Merci à Silverman et Cosmos70 pour cette astuce
SUB image_recopy()
   2d_target_is 10 : 2d_image_copy 20,0,0,width(10),height(10)
   2d_target_is 0  : 2d_image_paste 20,left(10),top(10)
   2d_target_is 10
END_SUB
rem ============================================================================
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

Animation de courbe de Bézier cubique Empty
MessageSujet: Re: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique EmptyMar 25 Aoû 2015 - 7:44

Jolie animation - je n'ai pas essayé en compilé mais ça doit être encore plus joli et fluide
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Animation de courbe de Bézier cubique Empty
MessageSujet: Re: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique EmptyMar 25 Aoû 2015 - 14:02

Merci Papydall, je me suis bien amusé.

Voila une version colorée de mon cru que j'appellerais "tête de chat" .
Code:
rem ============================================================================
rem         Animation de courbe de Bézier cubique
rem                Par Papydall
rem ============================================================================

Init()
CreateInitpoint()
Anim()

end
rem ============================================================================
SUB Init()
    dim row(4,2), bezier(101,2)
    dim p1,p2,p3,jp1,jp2,jp3,incp1,incp2,incp3,q1,q2,q3,jq1,jq2,jq3,incq1,incq2,incq3
    p1 = 0 : p2 = 10 : p3 = 5
    jp1 = 1 : jp2 = 2 : jp3 = 5
    incp1 = 0.9 : incp2 = 0.6 : incp3 = 0.1
    q1 = 2 : q2 = 7 : q3 = 4  : jq1 = 0 : jq2 = 9 : jq3 = 6
    incq1 = 0.3 : incq2 = 0.3 : incq3 = 0.3
    width 0,700 : height 0,800: top 0,(screen_y - width(0))/2
'    full_space 0
    left 0,(screen_x -height(0))/2
    color 0,0,0,0
    picture 10  : full_space 10 :color 10,0,0,0: 2d_target_is 10 : hide 10
    image 20
    caption 0,"<CLICK> pour arrêter ........"
END_SUB
rem ============================================================================
' D'abord nous créons 4 points de contrôle espacés également.
' Nous essayons de les mettre plus ou moins dans le même plan horizontal avec
' une compensation aléatoire du point initial.
rem ============================================================================
SUB CreateInitpoint()
    row(0,0) = 300                         : row(0,1) = 300
    row(1,0) = 300 + (rnd(060)-30) : row(1,1) = 270 + (rnd(060)-30)
    row(2,0) = 300 + (rnd(100)-50) : row(2,1) = 110 + (rnd(100)-50)
    row(3,0) = 300 - (rnd(150)-75) : row(3,1) = 200 + (rnd(150)-75)
END_SUB
rem ============================================================================
SUB Anim()
    repeat
         CreateInterpolated() : ' Interpoler la courbe de Bézier
         DrawCircleOnPath()   : ' Placer des cercles sur la courbe de Bézier
         JigglePoints()       : ' Changer légèrement les 4 points initiaux
         image_recopy()       : ' Pour un affichage sans clignotement
    until scancode <> 0
END_SUB
rem ============================================================================
' Interpoler la courbe
' Ici nous créons un ensemble à 100 éléments de points interpolés.
' Ceux-ci sont sur la courbe (spline) de Bézier
SUB CreateInterpolated()
    dim_local i,ix,x1,x2,x3,x4,y1,y2,y3,y4
    for i = 0 to 100
        ix = i/100
        x1 = (1-ix)*(1-ix)*(1-ix)*row(0,0) : y1 = (1-ix)*(1-ix)*(1-ix)*row(0,1)
        x2 = 3*(1-ix)*(1-ix)*ix*row(1,0)   : y2 = 3*(1-ix)*(1-ix)*ix*row(1,1)
        x3 = 3*(1-ix)*ix*ix*row(2,0)       : y3 = 3*(1-ix)*ix*ix*row(2,1)
        x4 = ix*ix*ix*row(3,0)             : y4 = ix*ix*ix*row(3,1)
        bezier(i,0) = x1+x2+x3+x4 : bezier(i,1) = y1+y2+y3+y4
    next i
END_SUB
rem ============================================================================
' Créez les cercles de taille diminuante et le miroir
' Pour tous les points sur la courbe de Bézier définie par bezier(),
SUB DrawCircleonPath()
    dim_local i, outer,inner,surf,surf2,r,g,b
'   cls : ' Mettre le CLS en REM pour voir des belles images!
    outer = 38 : r=10:g=10:b=10
    for i = 0 to 100
        r=r+2:g=g+2:b=b+2
        2d_fill_color 255,0,0 : 2d_pen_color rnd(r),g,b
        outer = outer - 0.34 : surf  = 420 + (260-bezier(i,1))
        if surf > 350
           2d_circle bezier(i,0),420+(260-bezier(i,1)),outer
           2d_circle 420+(260-bezier(i,0)),420+(260-bezier(i,1)),outer
        end_if
        if outer < 2
            2d_fill_color 255,0,0 : 2d_pen_color r,rnd(g),b: inner = 3
        else
            2d_fill_color rnd(30)+i,rnd(75)+i,rnd(150)+i
            2d_pen_color rnd(30)+i,rnd(75)+i,rnd(150)+i : inner = outer -1
        end_if
        if surf > 350
           2d_circle bezier(i,0),420+(260-bezier(i,1)),outer
           2d_circle 420+(260-bezier(i,0)),420+(260-bezier(i,1)),outer
        end_if
    next i
    outer = 38 : r=10:g=10:b=10
    for i = 0 to 100
        r=r+2:g=g+2:b=b+2
        2d_fill_color 255,0,0 : 2d_pen_color rnd(30)+i,rnd(75)+i,rnd(150)+i
        outer = outer - 0.34 : surf2 = bezier(i,1)
        if surf2 < 350
           2d_circle bezier(i,0),bezier(i,1),outer
           2d_circle 420+(260-bezier(i,0)),bezier(i,1),outer
        end_if
        if outer < 2
           2d_fill_color rnd(30)+i,rnd(75)+i,rnd(150)+i : 2d_pen_color rnd(r),g,b : inner = 3
        else
           2d_fill_color 60+i,150+i,155+i : 2d_pen_color r,g,rnd(b) : inner = outer -1
        end_if
        if surf2 < 350
           2d_circle bezier(i,0),bezier(i,1),inner
           2d_circle 420+(260-bezier(i,0)),bezier(i,1),inner
        end_if
    next i
END_SUB
rem ============================================================================
' Compenser les points de contrôle pour donner une impression de mouvement
SUB JigglePoints()
    row(0,0) = 300 : row(0,1) = 300
    if jp1 > p1   then incp1 = -0.2
    if jp1 < 0-p1 then incp1 =  0.2
    if jp2 > p2   then incp2 = -0.2
    if jp2 < 0-p2 then incp2 =  0.2
    if jp3 > p3   then incp3 = -0.2
    if jp3 < 0-p3 then incp3 =  0.2

    jp1 = jp1 + incp1 : jp2  = jp2 + incp2 : jp3 = jp3 + incp3 / 2
    if jq1 > q1   then incq1 = -0.2
    if jq1 < 0-q1 then incq1 =  0.2
    if jq2 > q2   then incq2 = -0.2
    if jq2 < 0-q2 then incq2 =  0.2
    if jq3 > q3   then incq3 = -0.2
    if jq3 < 0-q3 then incq3 =  0.2

    jq1 = jq1 + incq1 : jq2 = jq2 + incq2 : jq3 = jq3 + incq3 / 2
    row(0,0) = row(0,0) - jp3 : row(0,1) = row(0,1) - jq3
    row(1,0) = row(1,0) - jp1 : row(1,1) = row(1,1) - jq1
    row(2,0) = row(2,0) - jp2 : row(2,1) = row(2,1) - jq2
    row(3,0) = row(3,0) - jp3 : row(3,1) = row(3,1) - jq3
END_SUB
rem ============================================================================
' Merci à Silverman et Cosmos70 pour cette astuce
SUB image_recopy()
   2d_target_is 10 : 2d_image_copy 20,0,0,width(10),height(10)
   2d_target_is 0  : 2d_image_paste 20,left(10),top(10)
   2d_target_is 10
END_SUB
rem ============================================================================

A+


Dernière édition par Jean Claude le Mar 25 Aoû 2015 - 14:15, édité 1 fois
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Animation de courbe de Bézier cubique Empty
MessageSujet: Re: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique EmptyMar 25 Aoû 2015 - 14:10

Citation :
que japperais "tête de chat"
C'est pas plutôt les chiens qui jappent que les chats ?
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Animation de courbe de Bézier cubique Empty
MessageSujet: Re: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique EmptyMar 25 Aoû 2015 - 14:16

JL35 a écrit:
Citation :
que japperais "tête de chat"
C'est pas plutôt les chiens qui jappent que les chats ?

Bien vu JL35, c'est corrigé. Very Happy
Revenir en haut Aller en bas
papydall

papydall


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

Animation de courbe de Bézier cubique Empty
MessageSujet: Re: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique EmptyMar 25 Aoû 2015 - 14:44

Moi, j’ai vu autre chose que  chiot, chat, ou la cigale et la fourmi ….
Mais, bon jappe qui peut ! si on veut.

Vive les courbes de béz(i)er!
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jpcr

jpcr


Nombre de messages : 276
Age : 57
Localisation : Val de Marne (94)
Date d'inscription : 06/05/2011

Animation de courbe de Bézier cubique Empty
MessageSujet: Re: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique EmptyMar 25 Aoû 2015 - 22:16

bravo, c’est très joli !!!
Revenir en haut Aller en bas
http://jeanpierre.creis.free.fr/Panoramic/Panoramic.html
papydall

papydall


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

Animation de courbe de Bézier cubique Empty
MessageSujet: Re: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique EmptyMar 25 Aoû 2015 - 22:21

Merci jpcr  sunny
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

Animation de courbe de Bézier cubique Empty
MessageSujet: Re: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique EmptyMer 26 Aoû 2015 - 12:26

@Jean_Debord: C'est aussi typiquement le type de programme que tu pourrais adapter pour ton compilateur afin d'en apprécier les performances. Le visuel est déjà là, mais bien sûr, compilé, l'animation des images devrait être bien plus rapide.
Revenir en haut Aller en bas
Contenu sponsorisé





Animation de courbe de Bézier cubique Empty
MessageSujet: Re: Animation de courbe de Bézier cubique   Animation de courbe de Bézier cubique Empty

Revenir en haut Aller en bas
 
Animation de courbe de Bézier cubique
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» numérique : Courbe de Bézier
» Courbe en S
» Une nouvelle courbe
» Les Courbes de Bézier cubiques
» Défi2 = les moindres carrés

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les inutilitaires-
Sauter vers: