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
Animation de courbe de Bézier cubique Emptypar Marc Aujourd'hui à 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Animation de courbe de Bézier cubique Emptypar Marc Aujourd'hui à 12:22

» Philharmusique
Animation de courbe de Bézier cubique Emptypar jjn4 Hier à 13:58

» PANORAMIC V 1
Animation de courbe de Bézier cubique Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Animation de courbe de Bézier cubique Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Animation de courbe de Bézier cubique Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Animation de courbe de Bézier cubique Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Animation de courbe de Bézier cubique Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Animation de courbe de Bézier cubique Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Animation de courbe de Bézier cubique Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Animation de courbe de Bézier cubique Emptypar Klaus Lun 6 Mai 2024 - 11:41

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

» @Jack
Animation de courbe de Bézier cubique Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Animation de courbe de Bézier cubique Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Animation de courbe de Bézier cubique 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 :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

 

 Animation de courbe de Bézier cubique

Aller en bas 
5 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

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 : 5950
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 : 5950
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 : 7009
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 : 7009
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: