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
» Logiciel de planétarium.
Animation de courbe de Bézier cubique Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Animation de courbe de Bézier cubique Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Animation de courbe de Bézier cubique Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Animation de courbe de Bézier cubique Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Animation de courbe de Bézier cubique Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Animation de courbe de Bézier cubique Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Animation de courbe de Bézier cubique Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Animation de courbe de Bézier cubique Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Animation de courbe de Bézier cubique Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Animation de courbe de Bézier cubique Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Animation de courbe de Bézier cubique Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Animation de courbe de Bézier cubique Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Animation de courbe de Bézier cubique Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Animation de courbe de Bézier cubique Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Animation de courbe de Bézier cubique Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Code promo Nike : -25% dès 50€ ...
Voir le deal

 

 Animation de courbe de Bézier cubique

Aller en bas 
5 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
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 : 52
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 : 70
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 : 7112
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 : 70
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 : 7017
Age : 74
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 : 7017
Age : 74
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 : 52
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: