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.
Comment faire une animation fluide, sans scintillements? Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Comment faire une animation fluide, sans scintillements? Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Comment faire une animation fluide, sans scintillements? Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Comment faire une animation fluide, sans scintillements? Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Comment faire une animation fluide, sans scintillements? Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Comment faire une animation fluide, sans scintillements? Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Comment faire une animation fluide, sans scintillements? Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Comment faire une animation fluide, sans scintillements? Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Comment faire une animation fluide, sans scintillements? Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Comment faire une animation fluide, sans scintillements? Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Comment faire une animation fluide, sans scintillements? Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Comment faire une animation fluide, sans scintillements? Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Comment faire une animation fluide, sans scintillements? Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Comment faire une animation fluide, sans scintillements? Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Comment faire une animation fluide, sans scintillements? 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 : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

 

 Comment faire une animation fluide, sans scintillements?

Aller en bas 
3 participants
AuteurMessage
d.j.peters

d.j.peters


Nombre de messages : 77
Age : 60
Localisation : Germany
Date d'inscription : 31/07/2010

Comment faire une animation fluide, sans scintillements? Empty
MessageSujet: Comment faire une animation fluide, sans scintillements?   Comment faire une animation fluide, sans scintillements? EmptyJeu 19 Aoû 2010 - 18:02

Comment faire une animation fluide, sans scintillements?

Je vous remercie

DJ
Code:
' based on idea of an cubic spline
' X = x0*(1-u)^3 + x1*3*u*(1-u)^2 + x2*3*u^2*(1-u) + x3*u^3
' Y = y0*(1-u)^3 + y1*3*u*(1-u)^2 + y2*3*u^2*(1-u) + y3*u^3

' code
label Resize,Calc,Draw,SetBars
' events
label TimerEvent,hBarChange,vBarChange
label OptionClick0,OptionClick1,OptionClick2,OptionClick3

' objects
dim frmMain%:frmMain% = 0
dim picMain%:picMain% = 1
dim tmrMain%:tmrMain% = 2
dim grpOptions%:grpOptions% = 3
dim optP%(3),hBar%,vBar%

' vars
dim OldWidth%  ,OldHeight%
dim FormWidth%  ,FormHeight%
dim ClientWidth%,ClientHeight%
dim i%,j%,id%,CurrentPoint%,u,MustReDraw%
dim xx(100),yy(100),xA(100),yA(100),xB(100),yB(100),xC(100),yC(100)
dim xAB(100),yAB(100),xBC(100),yBC(100)
dim x01,y01 ,x12,y12 ,x23,y23
dim xd10,yd10,xd21,yd21,xd32,yd32
dim x(3),y(3),xd(2),yd(2)

caption frmMain%,"Cubic Spline"

picture        picMain%
full_space      picMain%
2d_target_is    picMain%
print_target_is picMain%
2d_clear

container_option grpOptions%:caption grpOptions%,"Move:"
for i%=0 to 3
  id%=grpOptions%+1+i%:optP%(i%)=id%
  option id%:parent id%,grpOptions%:caption id%,"Point " + str$(i%)
next i%
mark_on optP%(0)

hBar%=grpOptions%+5
track_bar hBar%:horizontal hBar%
vBar%=hBar%+1
track_bar vBar%:vertical  vBar%

timer          tmrMain%
timer_interval tmrMain%,1000

' events
on_click  optP%(0),OptionClick0
on_click  optP%(1),OptionClick1
on_click  optP%(2),OptionClick2
on_click  optP%(3),OptionClick3
on_change hBar%,hBarChange
on_change vBar%,vBarChange
on_timer  tmrMain%,TimerEvent


gosub Resize
x(0)= 10                :y(0)= 10
x(1)= 20                :y(1)= height(picMain%)-30
x(2)= width(picMain%)-40:y(2)= height(picMain%)-30
x(3)= width(picMain%)-20:y(3)= 10
position hBar%,x(CurrentPoint%)*0.1
position vBar%,y(CurrentPoint%)*0.1

' go in main eventloop
end



' get client width and height of FORM frmMain%
' don't allow a window shorter then 320x200
Resize:
  full_space picMain%
  ClientWidth%  = width(picMain%)
  while ClientWidth%<320
    FormWidth% = FormWidth%+1
    width frmMain%,FormWidth%
    full_space picMain%
    ClientWidth% = width(picMain%)
  end_while
  left picMain%,0:width picMain%,ClientWidth%-48
  OldWidth%=FormWidth%

  ClientHeight% = height(picMain%)
  while ClientHeight%<200
    FormHeight% = FormHeight%+1
    height frmMain%,FormHeight%
    full_space picMain%
    ClientHeight% = height(picMain%)
  end_while
  height picMain%,ClientHeight%-106
  OldHeight%=FormHeight%

  ' bars
  left vBar%,ClientWidth%-48:top vBar%,0:height vBar%,height(picMain%)
  min vBar%,0:max vBar%,height(picMain%)*0.1
  left hBar%,0:top hBar%,height(picMain%):width hBar%,width(picMain%)
  min hBar%,0:max hBar%,width(picMain%)*0.1
  ' options
  top    grpOptions%,height(picMain%)+48
  width  grpOptions%,width(picMain%)
  height grpOptions%,52
  for i%=0 to 3
    id%=optP%(i%)
    left id%,10+i%*60:top id%,16:width id%,60
  next i%
  return

Calc:
  ' get deltas from current points
  for i%=0 to 2
    xd(i%)=x(i%+1)-x(i%):yd(i%)=y(i%+1)-y(i%)
  next i%
  i%=0
  ' get spline points
  for u=0 to 1 step 0.01
    xA(i%)  = x(0)+u*xd(0)              : yA(i%) = y(0)+u*yd(0)
    xB(i%)  = x(1)+u*xd(1)              : yB(i%) = y(1)+u*yd(1)
    xC(i%)  = x(2)+u*xd(2)              : yC(i%) = y(2)+u*yd(2)
    xAB(i%) =  xA(i%)+u*( xB(i%)- xA(i%)): yAB(i%) =  yA(i%)+u*( yB(i%)- yA(i%))
    xBC(i%) =  xB(i%)+u*( xC(i%)- xB(i%)): yBC(i%) =  yB(i%)+u*( yC(i%)- yB(i%))
    xx(i%)  = xAB(i%)+u*(xBC(i%)-xAB(i%)): yy(i%)  = yAB(i%)+u*(yBC(i%)-yAB(i%))
    i%=i%+1
  next u
  MustReDraw%=1
  return
 
Draw:
  for i%=0 to 99
    2d_clear
    ' draw the text of the 4 points
    for j% = 0 to 3
      print_locate x(j%),y(j%):print "P"+str$(j%)
    next j%
    ' draw the 4 points via lines
    2d_pen_color 0,0,168
    2d_pen_width 2
    2d_poly_from x(0),y(0)
    for j% = 1 to 3
      2d_poly_to x(j%),y(j%)
    next j%
    ' draw moving lines
    2d_pen_color 0,168,0
    2d_poly_from xA(i%),yA(i%)
    2d_poly_to  xB(i%),yB(i%)
    2d_poly_to  xC(i%),yC(i%)
    2d_circle    xA(i%),yA(i%),3
    2d_circle    xB(i%),yB(i%),3
    2d_circle    xC(i%),yC(i%),3

    2d_pen_color 0,0,168
    2d_poly_from xAB(i%),yAB(i%)
    2d_poly_to  xBC(i%),yBC(i%)
    2d_circle    xAB(i%),yAB(i%),3
    2d_circle    xBC(i%),yBC(i%),3

    ' draw the cubic spline
    if i%>0
      2d_pen_color 168,0,0
      2d_poly_from xx(0),yy(0)
      for j% = 1 to i%
        2d_poly_to xx(j%),yy(j%)
      next j%
      2d_circle xx(i%),yy(i%),3
    end_if
    wait 10
    ' display
  next i%
  MustReDraw%=0
  return

' events
TimerEvent:
  timer_off tmrMain%
  FormWidth%  = width(frmMain%)
  FormHeight% = height(frmMain%)
  if (FormWidth%<>OldWidth%) or (FormHeight%<>OldHeight%)
    gosub Resize
    MustReDraw%=1
  end_if
  if (MustReDraw%=1)
    gosub Draw
  end_if
  timer_on tmrMain%
  return

OptionClick0:
  CurrentPoint%=0:goto SetBars
OptionClick1:
  CurrentPoint%=1:goto SetBars
OptionClick2:
  CurrentPoint%=2:goto SetBars
OptionClick3:
  CurrentPoint%=3:goto SetBars

hBarChange:
  x(CurrentPoint%)=position(hBar%)*10:goto Calc
vBarChange:
  y(CurrentPoint%)=position(vBar%)*10:goto Calc

SetBars:
  position hBar%,x(CurrentPoint%)*0.1
  position vBar%,y(CurrentPoint%)*0.1
  return
Revenir en haut Aller en bas
http://shiny3d.de
Invité
Invité




Comment faire une animation fluide, sans scintillements? Empty
MessageSujet: Re: Comment faire une animation fluide, sans scintillements?   Comment faire une animation fluide, sans scintillements? EmptyJeu 19 Aoû 2010 - 19:14

une nette amélioration avec les moyens du bord.

Code:

' based on idea of an cubic spline
' X = x0*(1-u)^3 + x1*3*u*(1-u)^2 + x2*3*u^2*(1-u) + x3*u^3
' Y = y0*(1-u)^3 + y1*3*u*(1-u)^2 + y2*3*u^2*(1-u) + y3*u^3

' code
label Resize,Calc,Draw,SetBars
' events
label TimerEvent,hBarChange,vBarChange
label OptionClick0,OptionClick1,OptionClick2,OptionClick3

' objects
dim frmMain%:frmMain% = 0
dim picMain%:picMain% = 1
dim tmrMain%:tmrMain% = 2
dim grpOptions%:grpOptions% = 3
dim optP%(3),hBar%,vBar%

' vars
dim OldWidth%  ,OldHeight%
dim FormWidth%  ,FormHeight%
dim ClientWidth%,ClientHeight%
dim i%,j%,id%,CurrentPoint%,u,MustReDraw%
dim xx(100),yy(100),xA(100),yA(100),xB(100),yB(100),xC(100),yC(100)
dim xAB(100),yAB(100),xBC(100),yBC(100)
dim x01,y01 ,x12,y12 ,x23,y23
dim xd10,yd10,xd21,yd21,xd32,yd32
dim x(3),y(3),xd(2),yd(2)
dim f$      :' $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
f$="1.bmp"  :' $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +++

caption frmMain%,"Cubic Spline"
picture        10 :full_space 10
picture        picMain%
full_space      picMain%
2d_target_is    picMain%
print_target_is picMain%
2d_clear

container_option grpOptions%:caption grpOptions%,"Move:"
for i%=0 to 3
  id%=grpOptions%+1+i%:optP%(i%)=id%
  option id%:parent id%,grpOptions%:caption id%,"Point " + str$(i%)
next i%
mark_on optP%(0)

hBar%=grpOptions%+5
track_bar hBar%:horizontal hBar%
vBar%=hBar%+1
track_bar vBar%:vertical  vBar%

timer          tmrMain%
timer_interval tmrMain%,1000

' events
on_click  optP%(0),OptionClick0
on_click  optP%(1),OptionClick1
on_click  optP%(2),OptionClick2
on_click  optP%(3),OptionClick3
on_change hBar%,hBarChange
on_change vBar%,vBarChange
on_timer  tmrMain%,TimerEvent


gosub Resize
x(0)= 10                :y(0)= 10
x(1)= 20                :y(1)= height(picMain%)-30
x(2)= width(picMain%)-40:y(2)= height(picMain%)-30
x(3)= width(picMain%)-20:y(3)= 10
position hBar%,x(CurrentPoint%)*0.1
position vBar%,y(CurrentPoint%)*0.1

' go in main eventloop
END:' **



' get client width and height of FORM frmMain%
' don't allow a window shorter then 320x200
Resize:
  full_space picMain%
  ClientWidth%  = width(picMain%)
  while ClientWidth%<320
    FormWidth% = FormWidth%+1
    width frmMain%,FormWidth%
    full_space picMain%
    ClientWidth% = width(picMain%)
  end_while
  left picMain%,0:width picMain%,ClientWidth%-48
  OldWidth%=FormWidth%

  ClientHeight% = height(picMain%)
  while ClientHeight%<200
    FormHeight% = FormHeight%+1
    height frmMain%,FormHeight%
    full_space picMain%
    ClientHeight% = height(picMain%)
  end_while
  height picMain%,ClientHeight%-106
  OldHeight%=FormHeight%

  ' bars
  left vBar%,ClientWidth%-48:top vBar%,0:height vBar%,height(picMain%)
  min vBar%,0:max vBar%,height(picMain%)*0.1
  left hBar%,0:top hBar%,height(picMain%):width hBar%,width(picMain%)
  min hBar%,0:max hBar%,width(picMain%)*0.1
  ' options
  top    grpOptions%,height(picMain%)+48
  width  grpOptions%,width(picMain%)
  height grpOptions%,52
  for i%=0 to 3
    id%=optP%(i%)
    left id%,10+i%*60:top id%,16:width id%,60
  next i%
  return

Calc:
  ' get deltas from current points
  for i%=0 to 2
    xd(i%)=x(i%+1)-x(i%):yd(i%)=y(i%+1)-y(i%)
  next i%
  i%=0
  ' get spline points
  for u=0 to 1 step 0.01
    xA(i%)  = x(0)+u*xd(0)              : yA(i%) = y(0)+u*yd(0)
    xB(i%)  = x(1)+u*xd(1)              : yB(i%) = y(1)+u*yd(1)
    xC(i%)  = x(2)+u*xd(2)              : yC(i%) = y(2)+u*yd(2)
    xAB(i%) =  xA(i%)+u*( xB(i%)- xA(i%)): yAB(i%) =  yA(i%)+u*( yB(i%)- yA(i%))
    xBC(i%) =  xB(i%)+u*( xC(i%)- xB(i%)): yBC(i%) =  yB(i%)+u*( yC(i%)- yB(i%))
    xx(i%)  = xAB(i%)+u*(xBC(i%)-xAB(i%)): yy(i%)  = yAB(i%)+u*(yBC(i%)-yAB(i%))
    i%=i%+1
  next u
  MustReDraw%=1
  return

Draw:


  for i%=0 to 99
  file_save picMain%,f$                      :' $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  sehen_Sie
  file_load 10,f$  :  hide picMain% :show 10  :' $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    2d_clear
    ' draw the text of the 4 points
    for j% = 0 to 3
      print_locate x(j%),y(j%):print "P"+str$(j%)
    next j%
    ' draw the 4 points via lines
    2d_pen_color 0,0,168
    2d_pen_width 2
    2d_poly_from x(0),y(0)
    for j% = 1 to 3
      2d_poly_to x(j%),y(j%)
    next j%
    ' draw moving lines
    2d_pen_color 0,168,0
    2d_poly_from xA(i%),yA(i%)
    2d_poly_to  xB(i%),yB(i%)
    2d_poly_to  xC(i%),yC(i%)
    2d_circle    xA(i%),yA(i%),3
    2d_circle    xB(i%),yB(i%),3
    2d_circle    xC(i%),yC(i%),3

    2d_pen_color 0,0,168
    2d_poly_from xAB(i%),yAB(i%)
    2d_poly_to  xBC(i%),yBC(i%)
    2d_circle    xAB(i%),yAB(i%),3
    2d_circle    xBC(i%),yBC(i%),3

    ' draw the cubic spline
    if i%>0
      2d_pen_color 168,0,0
      2d_poly_from xx(0),yy(0)
      for j% = 1 to i%
        2d_poly_to xx(j%),yy(j%)
      next j%
      2d_circle xx(i%),yy(i%),3
    end_if
    wait 10
    ' display

    show picMain%  :  hide 10 :' hier    !!!!!!!!!!!!
  next i%
  MustReDraw%=0

  return

' events
TimerEvent:
  timer_off tmrMain%
  FormWidth%  = width(frmMain%)
  FormHeight% = height(frmMain%)
  if (FormWidth%<>OldWidth%) or (FormHeight%<>OldHeight%)
    gosub Resize
    MustReDraw%=1
  end_if
  if (MustReDraw%=1)
    gosub Draw
  end_if
  timer_on tmrMain%
  return

OptionClick0:
  CurrentPoint%=0:goto SetBars
OptionClick1:
  CurrentPoint%=1:goto SetBars
OptionClick2:
  CurrentPoint%=2:goto SetBars
OptionClick3:
  CurrentPoint%=3:goto SetBars

hBarChange:
  x(CurrentPoint%)=position(hBar%)*10:goto Calc
vBarChange:
  y(CurrentPoint%)=position(vBar%)*10:goto Calc

SetBars:
  position hBar%,x(CurrentPoint%)*0.1
  position vBar%,y(CurrentPoint%)*0.1
  return
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Comment faire une animation fluide, sans scintillements? Empty
MessageSujet: Re: Comment faire une animation fluide, sans scintillements?   Comment faire une animation fluide, sans scintillements? EmptyJeu 19 Aoû 2010 - 23:25

La modif de cosmos70 fonctionne encore mieux si on utilise un RAMDISK,
pour stocker le bmp...
Par contre je ne sais pas pourquoi mais le programme au bout d'un moment (5 / 10 mn) se bloque...
On a beau sélectionner les points ou les trackbars, il n'y a plus d'évènements...

Revenir en haut Aller en bas
http://nardo26.lescigales.org
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Comment faire une animation fluide, sans scintillements? Empty
MessageSujet: +++   Comment faire une animation fluide, sans scintillements? EmptyJeu 19 Aoû 2010 - 23:50

C'est plus ou moins, mais il y a toujours des scintillements
qui ne sont effectivement pas très jolis.

On avait déjà évoqué cela, voir :
https://panoramic.1fr1.net/les-inutilitaires-f9/feu-de-cheminee-impressionniste-t629.htm

Et il semblerait qu'il n'y ait guère de solution pour le moment.
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Invité
Invité




Comment faire une animation fluide, sans scintillements? Empty
MessageSujet: Re: Comment faire une animation fluide, sans scintillements?   Comment faire une animation fluide, sans scintillements? EmptySam 21 Aoû 2010 - 9:30

Pour ce qui est des blocages, au bout d'un moment, je pense qu'il y a saturation de la mémoire.
Dans mon programme en cours, je sollicite beaucoup celle-ci, j'arrive à formater une page entière d'un picture d'un texte en 1 à 2 secondes. Mais plus j'avance dans les pages (avec les même pictures), plus cela devient lent. Au bout de 8/10 pages, il faut 5/10 secondes pour l'écrire.

Il manque pour moi une fonction de garbage. Dans d'autre basic, j'utilisais je crois: fre(0) pour faire le nettoyage.

Ici tu dis que tu utilise un disque virtuel. Est-ce qu'il n'ait pas à saturation, à un certain moment?
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Comment faire une animation fluide, sans scintillements? Empty
MessageSujet: Re: Comment faire une animation fluide, sans scintillements?   Comment faire une animation fluide, sans scintillements? EmptySam 21 Aoû 2010 - 15:44

@cosmos70
Je ne sais pas trop.
L'idée du ramdisk m'est venu lorsque j'ai essayé ta modif du prog et que j'ai vu la loupiote de mon disque dur clignoter à fond la caisse. Je me suis dis que pour limiter les temps d'accès, il vallait mieux passer par un ramdisk. L'image sauvegardée dedans fait toujours la même taille...donc je ne vois pas ce que tu veux dire par saturation du ramdisk...
Quand au blocage, il est possible que cela provienne lors de plusieurs lancements successif du programme (est-ce de cela dont tu parles?).
Je n'ai pas vérifié l'état de la mémoire lorsque tout à bloqué. je n'ai que 512Mo de RAM.
Maintenant que tu parles de problème de libération de mémoire, je ferai plus attention si jamais cela se reproduit.
J'ai déjà eu des messages du genre "Impossible de lancer panoramic.exe" lorsque je cliquai sur F9... c'est peut être lié tout ça...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




Comment faire une animation fluide, sans scintillements? Empty
MessageSujet: Re: Comment faire une animation fluide, sans scintillements?   Comment faire une animation fluide, sans scintillements? EmptySam 21 Aoû 2010 - 16:22

Je pense pouvoir te dire que cela est du à cela. J'ai RamBoost XP d'installé, et à chaque fois que j'ai eu ce message, en cliquant trop vite sans regarder, l'icône était au rouge, et c'est impardonnable, on perd tout. Moi aussi j'ai pas plus de mémoire!
Revenir en haut Aller en bas
Contenu sponsorisé





Comment faire une animation fluide, sans scintillements? Empty
MessageSujet: Re: Comment faire une animation fluide, sans scintillements?   Comment faire une animation fluide, sans scintillements? Empty

Revenir en haut Aller en bas
 
Comment faire une animation fluide, sans scintillements?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» encore un probleme avec mon logiciel traitement texte
» Comment afficher une image sans fond.
» Comment faire fonctionner \qj en RTF ?
» Comment faire pour télécharger la dll de Klaus
» Comment faire: if label(r3$)=1 then resultat=r3$ ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: