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
» 3D_LINE How to ?
par papydall Aujourd'hui à 6:51

» mise a jour calculatrice
par joeeee2017 Hier à 23:00

» supprimé
par joeeee2017 Dim 15 Oct 2017 - 20:02

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» Convertisseur de base 10 de 2 à 36
par gigi75 Sam 14 Oct 2017 - 21:54

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» supprimé
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

» Mise à jour PANOMAND
par jean_debord Mar 26 Sep 2017 - 11:33

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Les attracteurs étranges

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

avatar

Nombre de messages : 5537
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 : 5031
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 : 5857
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 : 5537
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 : 5857
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 : 5537
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 : 5857
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 : 5537
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 : 5857
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 : 5537
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
-
» Clifford Attractors
» 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: