FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 0:29

» track_bar circulaire
par Klaus Hier à 21:41

» Gestionnaire de Projets Panoramic
par Jean Claude Hier à 20:41

» Mah-Jong européen new-look
par Jean Claude Hier à 20:34

» Gestion de l'Unicode
par jean_debord Hier à 11:21

» Button_picture
par pascal10000 Jeu 14 Déc 2017 - 11:41

» Pourquoi le compilateur stagne
par Minibug Jeu 14 Déc 2017 - 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Jeu 14 Déc 2017 - 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Jeu 14 Déc 2017 - 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Jeu 14 Déc 2017 - 10:00

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Les attracteurs étranges

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
papydall

avatar

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

MessageSujet: Les attracteurs étranges   Ven 6 Avr 2012 - 22:04

Salut tout le monde !
Voici 2 petits programmes :
Le 1er trace l’attracteur de Lorenz et le second celui de Rôssler.
Plusieurs minutes sont nécessaires pour obtenir un beau dessin. Alors, ne cliquez pas trop vite pour arrêter !
Bonne vision.
Et à +


Attracteur de Lorenz

Code:

' ******************************************************************************
'
'        L ' A T T R A C T E U R    D E  E D W A R D  L O R E N Z
'
'                        P A R  P A P Y D A L L
'
' ******************************************************************************

' En 1963, le météorologue Edward Lorenz a mis en évidence le caractère
' chaotique de la météorologie.

' Le modèle de Lorenz, appelé aussi système dynamique de Lorenz ou oscillateur
' de Lorenz, est une modélisation simplifiée de phénomènes météorologiques basée
' sur la mécanique des fluides. L'oscillateur de Lorenz est un système dynamique
' tridimensionnel qui engendre un comportement chaotique dans certaines
' conditions.
'
' Les équations de Lorenz décrivent les phénomènes de convection d'un fluide
' idéal à 2 dimensions, dans un réseau chauffé par le bas :
'
' dx/dt = a * (y - x)
' dy/dt = b * x - x * z
' dz/dt = x * y - c * z

' a : Constante de Prandtl qui caractérise la viscosité et la conductivité
'    thermique du fluide.
' b : Paramètre de contrôle, représentant la différence de température entre
'    le bas et le haut du réservoir.
' c : Rapport entre hauteur et largeur du système de convection.
'
' Au delà d'une valeur critique du paramètre a, le comportement du système est
' chaotique. L'ensemble des trajectoires possibles des phases est l'attracteur
' étrange de Lorenz.
'
' La courbe est d'une compléxité telle qu'on comprend que parfois les prévisions
' météorologiques sont si hasardeuses.

' Ayant été moi-même, avant ma retraite, météorologue de profession ( mais à un
' niveau plus modeste), j'apprécie cet attracteur. D'ailleurs, mon avatar sur ce
' forum, n'est autre que l'attracteur de Lorenz.
'
' ******************************************************************************

dim a,b,c,dt,x,y,z,t,pi,xe,ye,dx,dy,dz,xn,yn,zn
dim alfa,beta,offx,offy,zoom
dim MinMax(3,2)
dim u(3),v(3),w(3),xp(3)

label init,tracer,attracteur

gosub init : gosub attracteur
end
' ******************************************************************************
init:
  width 0 ,700 : height 0 ,600
  caption 0," L'attracteur de Lorenz            <CLICK> pour arrêter"
  pi = 4*atn(1)
  dt = .005
  a = 10  : b = 28  : c = 8 / 3  : ' Essayez ces différents paramètres
  ' a = 3    : b = 26.5 : c = 1
  ' a = 7    : b = 18  : c = 1
  ' a = 9.5  : b = 19  : c = 1
  ' a = 9.5  : b = 19  : c = 17/7



  Alfa = 135 * Pi / 180 : Beta = 20 * Pi / 180
  Offx = 0 : Offy = 24 : Zoom = 15 : x = 5 : y = 5 : z = 0
  MinMax(1, 1) = -30
  MinMax(1, 2) = 30
  MinMax(2, 1) = -30
  MinMax(2, 2) = 30
  MinMax(3, 1) = 0
  MinMax(3, 2) = 55

' matrice de projection
  u(1) = COS(Alfa) * COS(Beta) : u(2) = SIN(Alfa) * COS(Beta) : u(3) = SIN(Beta)
  v(1) = 0-SIN(Alfa) : v(2) = COS(Alfa) : v(3) = 0
  w(1) = 0-COS(Alfa) * SIN(Beta) : w(2) = 0-SIN(Alfa)* SIN(Beta):w(3)= COS(Beta)
  color 0,0,0,0 : 2d_pen_color 255,255,255
return
' ******************************************************************************

tracer:
  xp(1) = u(1) * x + u(2) * y + u(3) * z
  xp(2) = v(1) * x + v(2) * y + v(3) * z
  xp(3) = w(1) * x + w(2) * y + w(3) * z

  xe = INT(320 * (xp(2) - Offx) * Zoom / 640 + 320 + .5)
  ye = INT(-240 * (xp(3) - Offy) * Zoom / 480 + 240 + .5)
return

'*******************************************************************************
attracteur:
t = t + dt : dx = a * (y - x) : dy = b * x - y - x * z : dz = x * y - c * z
x = x + dx * dt : y = y + dy * dt : z = z + dz * dt
gosub tracer : 2d_poly_from xe,ye

WHILE scancode = 0

  t = t + dt : dx = a * (y - x) : dy = b * x - y - x * z : dz = x * y - c * z
  x = x + dx * dt : y = y + dy * dt : z = z + dz * dt

  IF x > 0 AND y < 0    THEN 2d_pen_color 0,0,255
  IF x > 0 AND y >= 0  THEN 2d_pen_color 0,255,0
  IF x <= 0 AND y < 0  THEN 2d_pen_color 255,0,0
  IF x <= 0 AND y >= 0  THEN 2d_pen_color 255,255,0
  gosub tracer : 2d_poly_to  xe,ye

end_while
terminate
return


Attracteur de Rôssler

Code:

' ******************************************************************************
'
'        L ' A T T R A C T E U R    D E    O T T O  R Ô S S L E R
'
'                      P A R    P A P Y D A L L
'
' ******************************************************************************

' Les équations de ce système sont:
' dx/dt = -y - z
' dy/dt = x + a * y
' dz/dt = b + z *(x-c)
'
' ******************************************************************************

'    !!!!  NE CLICKER PAS TROP VITE POUR ARRETER  !!!
'
' !!! VEUILLEZ PATIENTER QUELQUES MINUTES : LE RESULTAT EN VAUT LA PEINE  !!!

' ******************************************************************************
dim a,b,c,dt,x,y,z,t,pi,xe,ye,dx,dy,dz,xn,yn,zn
dim alfa,beta,offx,offy,zoom,MinMax(3,2),u(3),v(3),w(3),xp(3)

label init,tracer,attracteur

gosub init : gosub attracteur
end
' ******************************************************************************
init:
  width 0 ,700 : height 0 ,700
  caption 0," L'attracteur de Rôssler            <CLICK>  pour arrêter"
  pi = 4*atn(1) : dt = .005
  x = 1 : y = 1 : z = 1
  color 0,0,0,0 : 2d_pen_color 0,255,0
' Essayez ces différents paramètres
  a = .2 : b = .2 : c = 5.7
  ' a = .1 : b = .1 : c = 14
  ' a = .13 : b = .1 : c = 8.5
  ' a = .1 : b = .1 : c = 9
  ' a = .1 : b = .1 : c = 12
  ' a = .1 : b = .1 : c = 12.6
  ' a = .1 : b = .1 : c = 13
  ' a = .07 : b = .15 : c = 18
 
  Alfa = 225 * Pi / 180 : Beta = 20 * Pi / 180
  Offx = 0 : Offy = 10 :Zoom = 25

  MinMax(1, 1) = -20
  MinMax(1, 2) = 20
  MinMax(2, 1) = -20
  MinMax(2, 2) = 20
  MinMax(3, 1) = 0
  MinMax(3, 2) = 30

' matrice de projection
  u(1) = COS(Alfa) * COS(Beta) : u(2) = SIN(Alfa) * COS(Beta) : u(3) = SIN(Beta)
  v(1) = 0-SIN(Alfa) : v(2) = COS(Alfa) : v(3) = 0
  w(1) = 0-COS(Alfa) * SIN(Beta) : w(2) = 0-SIN(Alfa)* SIN(Beta):w(3)= COS(Beta)

return

' ******************************************************************************
tracer:

  xp(1) = u(1) * x + u(2) * y + u(3) * z
  xp(2) = v(1) * x + v(2) * y + v(3) * z
  xp(3) = w(1) * x + w(2) * y + w(3) * z

  xe = INT(320 * (xp(2) - Offx) * Zoom / 640 + 320 + .5)
  ye = INT(-240 * (xp(3) - Offy) * Zoom / 480 + 240 + .5)
  2d_poly_to xe,ye +170

return

'*******************************************************************************
attracteur:

t = t + dt : dx = 0-(y + z) : dy = x + a * y : dz = b + z * (x - c)
x = x + dx * dt : y = y + dy * dt : z = z + dz * dt
gosub tracer : 2d_poly_from xe,ye +170

WHILE scancode = 0

  t = t + dt : dx = 0-(y + z) : dy = x + a * y : dz = b + z * (x - c)
  x = x + dx * dt : y = y + dy * dt : z = z + dz * dt

  IF x > 0 AND y < 0    THEN 2d_pen_color 0,0,255
  IF x > 0 AND y >= 0  THEN 2d_pen_color 0,255,0
  IF x <= 0 AND y < 0  THEN 2d_pen_color 255,0,0
  IF x <= 0 AND y >= 0  THEN 2d_pen_color 255,255,0

gosub tracer
end_while
terminate
return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

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

MessageSujet: Re: Les attracteurs étranges   Ven 6 Avr 2012 - 22:33

C'est clair qu'il faut être patient, mais le résultat est sympa.
A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5865
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Les attracteurs étranges   Ven 6 Avr 2012 - 23:55

Une petite variante de ton programme, j'ai supprimé les commentaires du début car je ne sais pas s'ils auraient encore un sens vu les modifs...
Code:

' ******************************************************************************
dim a,b,c,dt,x,y,z,t,pi,xe,ye,dx,dy,dz,xn,yn,zn
dim alfa,beta,offx,offy,zoom
dim u(3),v(3),w(3),xp(3)

label init,tracer

gosub init
WHILE scancode = 0
  t = t + dt : dx = a * (y - x) : dy = b * x - y - x * z : dz = x * y - c * z
  x = x + dx * dt : y = y + dy * dt : z = z + dz * dt
  gosub tracer
end_while
end

' ******************************************************************************
init:
  width 0 ,700 : height 0 ,600
  caption 0," L'attracteur de Lorenz            <CLICK> pour arrêter"
  pi = 4*atn(1)
  dt = .01
  a = 10  : b = 28  : c = 8 / 3  : ' Essayez ces différents paramètres
  ' a = 3    : b = 26.5 : c = 1
  ' a = 7    : b = 18  : c = 1
  ' a = 9.5  : b = 19  : c = 1
  ' a = 9.5  : b = 19  : c = 17/7

  Alfa = Pi / 8 : Beta =  Pi / 2
  Offx = 0 : Offy = 0 : Zoom = 25 : x = 5 : y = -30 : z = 0


' matrice de projection
  u(1) = COS(Alfa) * COS(Beta) : u(2) = SIN(Alfa) * COS(Beta) : u(3) = SIN(Beta)
  v(1) = 0-SIN(Alfa) : v(2) = COS(Alfa) : v(3) = 0
  w(1) = 0-COS(Alfa) * SIN(Beta) : w(2) = 0-SIN(Alfa)* SIN(Beta):w(3)= COS(Beta)
  color 0,0,0,0 : 2d_pen_color 255,255,255
return
' ******************************************************************************
tracer:
  xp(1) = u(1) * x + u(2) * y + u(3) * z
  xp(2) = v(1) * x + v(2) * y + v(3) * z
  xp(3) = w(1) * x + w(2) * y + w(3) * z

  xe = INT(320 * (xp(2) - Offx) * Zoom / 640 + 320 + .5)
  ye = INT(-240 * (xp(3) - Offy) * Zoom / 480 + 240 + .5)
  2d_pen_color (xe+ye)/15+rnd(80)+30,xe/10+rnd(80)+30,ye/10+rnd(80)+50
  if t=dt then 2d_poly_from xe,ye :else: 2d_poly_to  xe,ye
return
'*******************************************************************************
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Les attracteurs étranges   Sam 7 Avr 2012 - 0:54

Salut Jicehel!
C'est une autre façon de voir. C'est bien.
Et pour l'attracteur de Rössler, que proposes-tu ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5865
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Les attracteurs étranges   Sam 7 Avr 2012 - 1:44

Je n'ai plus trop d'idée originale pour les courbes ... alors bon, je ne sais pas une modif 3D mais ça ne casse pas trois pattes à un canard ...
Code:
dim a,b,c,dt,x,y,z,t,pi,xe,ye,ze, dx,dy,dz,xn,yn,zn, i,k, a$
dim alfa,beta,offx,offy,zoom,u(3),v(3),w(3),xp(3)

label init,tracer

scene3D 1 : full_space 1
cam_x_position 80  : cam_y_position 100    : cam_z_position 100  : ' positionne la camera
point_x_position 0 : point_y_position 0  : point_z_position 0 : ' objectif dirigé vers le centre
light_x_position -5 : light_y_position -1000 : light_z_position -5000 : ' positionne la lumiere

gosub init
WHILE scancode = 0
  t = t + dt : dx = 0-(y + z) : dy = x + a * y : dz = b + z * (x - c)
  x = x + dx * dt : y = y + dy * dt : z = z + dz * dt
gosub tracer
end_while
for i = -1*Pi to Pi  step 0.2
  x= x - cos(i) : y= sin(i) + y
  cam_x_position x+80  : cam_y_position y+100  : cam_z_position 100
  a$ = inkey$ : if asc(a$)  = 27 then i=Pi
  wait 200
next i
end

' ******************************************************************************
init:
  width 0 ,700 : height 0 ,700
  caption 0," L'attracteur de Rôssler            <CLICK>  pour arrêter"
  pi = 4*atn(1) : dt = .005
  x = 1 : y = 1 : z = 1 : k=1
  color 0,0,0,0 : 2d_pen_color 0,255,0
' Essayez ces différents paramètres
  a = .2 : b = .2 : c = 5.7
  ' a = .1 : b = .1 : c = 14
  ' a = .13 : b = .1 : c = 8.5
  ' a = .1 : b = .1 : c = 9
  ' a = .1 : b = .1 : c = 12
  ' a = .1 : b = .1 : c = 12.6
  ' a = .1 : b = .1 : c = 13
  ' a = .07 : b = .15 : c = 18

  Alfa = 225 * Pi / 180 : Beta = 20 * Pi / 180
  Offx = 0 : Offy = 10 :Zoom = 25


' matrice de projection
  u(1) = COS(Alfa) * COS(Beta) : u(2) = SIN(Alfa) * COS(Beta) : u(3) = SIN(Beta)
  v(1) = 0-SIN(Alfa) : v(2) = COS(Alfa) : v(3) = 0
  w(1) = 0-COS(Alfa) * SIN(Beta) : w(2) = 0-SIN(Alfa)* SIN(Beta):w(3)= COS(Beta)

return

' ******************************************************************************
tracer:

  xp(1) = u(1) * x + u(2) * y + u(3) * z
  xp(2) = v(1) * x + v(2) * y + v(3) * z
  xp(3) = w(1) * x + w(2) * y + w(3) * z

  caption 0, str$(xe)+"  :  "+str$(ye)+"  :  "+str$(ze)
  xe = INT(320 * (xp(2) - Offx) * Zoom / 640  + 50 + .5)
  ye = INT(-240 * (xp(3) - Offy) * Zoom / 480 - 50 + .5)
  ze = INT(-240 * (xp(1) - Offy) * Zoom / 480 - 50  + .5)
 
  3D_sphere k,0.1 : 3d_position k,xe,ye,ze : k=k+1

return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Les attracteurs étranges   Sam 7 Avr 2012 - 3:03

OK.
Mais pourquoi la ligne 31

Code:

color 0,0,0,0 : 2d_pen_color 0,255,0

semble ne pas être exécutée ?
Le tracé se fait en noir sur blanc au lieu de vert sur noir !
D'ailleurs je rencontre le même problème avec ce bout de code

Code:

width 0 ,700 : height 0 ,600
color 0,0,0,0
' 2d_clear
2d_pen_color 0,0,255
2d_line 320, 240 ,600,240

A l'exécution, l'écran reste obstinément noir, sans trace du segment de droite.
Mais si j'insère entre color 0,0,0,0 et 2d_pen_color 0,0,255, l'instruction 2d_clear, alors là, j'obtiens ce qui est attendu. Bizarre, non ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5865
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Les attracteurs étranges   Sam 7 Avr 2012 - 11:35

Non non Papydall, c'est normal, j'ai fais le programme rapidement et j'ai oublié de virer certaines instructions liées à la 2D alors que je trace des points en 3D.
Dans mon programme, il faut supprimer ces lignes
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Les attracteurs étranges   Lun 9 Avr 2012 - 4:42

Salut tout le monde!
Les plus courts sont les meilleurs!
Moins de 10 lignes de code; qui dit mieux?

Code:

'      ATTRACTEUR DE GUMOWXKI-MIRA par PAPYDALL
dim x,y,xp,xo,yo,a,b,r,a$
width 0,1000 : height 0,700
caption 0 , "<CLICK> pour arrêter" : color 0,0,0,0 : 2d_clear
' Essayez ces différentes lignes
 a = -.48  : b = .93 : xo = 4  : yo = 0  : r = 30
' a = .31  : b = 1  : xo = 3  : yo = 1  : r = 10
' a = -.31  : b = 1  : xo = 3  : yo = 1  : r = 5
' a = -.35  : b = 1  : xo = 1  : yo = 10 : r = 10
' a = -.6  : b = .99 : xo = 3  : yo = 1  : r = 20
' a = -.23  : b = 1  : xo = .8 : yo = .4 : r = 10
' a = -.05  : b = 1  : xo = 15 : yo = 0  : r = 10
' a = -.77  : b = .95 : xo = 3  : yo = 1  : r = 20
' a = .001  : b = 1  : xo = 1  : yo = 1  : r = 5
x = xo :y = yo
while scancode = 0
  xp = b*y+a*x+2*(1-a)*x*x/(1+x*x):y = 0-x+a*xp+2*(1-a)*xp*xp/(1+xp*xp):x = xp
  2d_pen_color 100 + rnd(150),150+rnd(100),rnd(255):2d_point r*x+460, r*y+340
end_while
terminate



Voici un autre, tout aussi court!

Code:

'      ATTRACTEUR DE CLIFFORD A. PICKOVER par PAPYDALL
dim x,y,xp,yp,a,b,c,d
width 0,1000 : height 0,700
caption 0 ,"<CLICK> pour arrêter" :color 0,0,0,0 : 2d_clear
x = 1 : y = 1 : a = -2.6 : b = -1.1 : c = 2.6 : d = .5
while scancode = 0
  xp=a*cos(d*sin(a*y))-c*sin(b*x):yp=b*sin(c*cos(b*x))-d*cos(a*y):x=xp:y=yp
  2d_pen_color 100+rnd(150),150+rnd(100),rnd(255):2d_point 150*xp+900,150*yp+350
end_while
terminate

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5865
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Les attracteurs étranges   Lun 9 Avr 2012 - 6:21

Très joli.
Pour la couleur, pour l'ATTRACTEUR DE GUMOVXKI-MIRA
je te propose cette formule pour la couleur si tu veux l'essayer. Je trouve qu'elle rend bien: 2d_pen_color abs(10*x) + rnd(50),abs(20*y)+rnd(50),rnd(255)
et pour l'ATTRACTEUR DE CLIFFORD j'aime bien celle la: 2d_pen_color abs(50*(x+3)) + rnd(50),abs(30*y)+rnd(50),rnd(255)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Les attracteurs étranges   Lun 9 Avr 2012 - 11:18

Bonjour Jicehel!
J'ai essayé les 2 formules pour la couleur, mais ça n'a pas marché, ni pour l'un, ni pour l'autre.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé




MessageSujet: Re: Les attracteurs étranges   

Revenir en haut Aller en bas
 
Les attracteurs étranges
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» des itinéraires étranges !
» Mails étranges ! Les Sponsors de l'arnaque :)

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: