Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Orbites | |
| | Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Orbites Dim 4 Mar 2012 - 13:17 | |
| Bonjour. Voici mon premier essai en Panoramic.Il ne suit peut-être pas la structure de programmation de ce langage,mais je commence à reapprendre. Je ne sais pas comment faire pour envoyer mes programmes. Essayez le programme avec les valeurs indiqués en REM. La touche <ECHAP> permet d'arrêter le tracé. Merci à tous et à +. Voici le code - Code:
-
' **************************************************** ' * * ' * ORBITES par Papydall * ' * * ' **************************************************** dim titre$ width 0,1000 : height 0,700 titre$ = "O R B I T E S" caption 0,"Papydall vous présente " + titre$
dim LX,LY,XI,XM,YI,YM,IM,A,B,XO,YO,F,I,X,Y,XX ,xp,yp,k,a$,r1,g1,b1
LX = 1000: LY = 700 Xi = -1.5 : XM = 1.5 : YI = -1 : YM = 1 : IM = 800 input " Valeur de la constante complexe : partie réelle A (0 --> 0.9) exp : 0.777777777 : ";A input " : partie imaginaire B (0 --> 0.9) exp : 0.111111111 : ";B ' ====================================================== ' Essayez ces valeurs ' A = 0.77777777777 B 0.1133333333 ' A = 0.1 B = 0.84 ' A = 0.77789456123 B = 0.123456789 ' A = 0.60123456789 B = 0.10123456789 ' ======================================================
print_locate 0 ,650:print " Veuillez patienter....."; : print " ESC pour arrêter..........";
while scancode <> 27 XO = (XM-XI)*RND(1)+XI :YO = (YM-YI)*RND(1)+YI:X=XO:Y=YO r1 = 255 : g1 = 255 : b1 = 255 for i = 1 to im xx = (x*x-y*y)-a : y = 2*x*y-b : x = xx xp=lx*(x-xi)/(xm-xi) : yp=ly*(y-yi)/(ym-yi) if i < (im*6/8) b1 = 0 else b1 = 255 end_if if i < (im / 2) g1 = 0 else g1 = 255 end_if if i < (im / 4) r1 = 0 else r1 = 255 end_if 2d_pen_color r1,g1,b1 2d_point xp,yp : 2d_point lx-xp,ly-yp if (x*x+y*y) > 4 then i = im next i end_while print "Programme arrêté" end
Dernière édition par papydall le Sam 10 Mar 2012 - 12:26, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Orbites Dim 4 Mar 2012 - 13:44 | |
| bienvenue Papydall, Quelques petites erreurs de syntaxe dans ton code, mais c'est très joli. Pour aider j'ai corrigé: - Code:
-
' **************************************************** ' * * ' * ORBITES par Papydall * ' * * ' **************************************************** dim titre$ width 0,1000 : height 0,700 titre$ = "O R B I T E S" caption 0,"Papydall vous présente " + titre$
dim LX,LY,XI,XM,YI,YM,IM,A,B,XO,YO,F,I,X,Y,XX ,xp,yp,k,a$,r1,g1,b1
LX = 1000: LY = 700 Xi = -1.5 : XM = 1.5 : YI = -1 : YM = 1 : IM = 800 ' input " Valeur de la constante complexe : partie réelle A (0 --> 0.9) exp : 0.777777777 : ";A ' input " : partie imaginaire B (0 --> 0.9) exp : 0.111111111 : ";B ' ====================================================== ' Essayez ces valeurs A = 0.77777777777: B= 0.1133333333 ' A = 0.1: B = 0.84 ' A = 0.77789456123 B = 0.123456789 ' A = 0.60123456789 B = 0.10123456789 ' ======================================================
print_locate 0 ,650:print " Veuillez patienter....." : print " ESC pour arrêter.........." while scancode <> 27 XO = (XM-XI)*RND(1)+XI :YO = (YM-YI)*RND(1)+YI:X=XO:Y=YO r1 = 255 : g1 = 255 : b1 = 255 for i = 1 to im xx = (x*x-y*y)-a : y = 2*x*y-b : x = xx xp=lx*(x-xi)/(xm-xi) : yp=ly*(y-yi)/(ym-yi) if i < (im*6) b1 = 0 else b1 = 255 end_if if i < (im / 2) g1 = 0 else g1 = 255 end_if if i < (im / 4) r1 = 0 else r1 = 255 end_if 2d_pen_color r1,g1,b1 2d_point xp,yp : 2d_point lx-xp,ly-yp if (x*x+y*y) > 4 then i = im next i end_while print "Programme arrêté" end Pour publier un code, tu disposes d'une balise qui s'appelle code (représentée par <>) et après tu colles ton code, ensuite tu reclick sur la balise pour déclarer ta fin de code. pour les erreurs de syntaxe il manque une ")" à je ne sais plus quelle ligne et il manque les ":" pour séparer les valeurs que tu nous proposes. A+ | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Orbites Dim 4 Mar 2012 - 14:01 | |
| Apparemment, ce sont les orbites de l'ensemble de Mandelbrot, avec un point de départ aléatoire. Il serait intéressant d'en faire une version 3D, comme ici : http://shiny3d.de/mandelbrot-dazibao/Chaos/Chaos.htmMalheureusement, je ne connais rien à la 3D et je n'ai pas étudié en détail les techniques expliquées sur ce site. Je me suis contenté d'adapter l'un de ses exemples pour mon programme PANOMAND, mais il y a beaucoup d'informations utiles sur le site. Et comme son auteur (un français du nom de "Jark") l'a abandonné, ce pourrait être une occasion de lui donner un second souffle ... grâce à Panoramic ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Orbites Dim 4 Mar 2012 - 14:36 | |
| Après, au niveau des conventions, c'est assez libre. Par exemple, on peut aussi présenter sous la forme: - Code:
-
' **************************************************** ' * ORBITES * ' * * ' * Version Panoramic 1.0 * ' * par Papydall * ' * * ' **************************************************** '
dim titre$ : titre$ = "O R B I T E S" width 0,1000 : height 0,700 : caption 0,"Papydall vous présente " + titre$
dim LX,LY : LX = 1000 : LY = 700 dim XI,YI : XI = -1.5 : YI = -1 dim XM,YM : XM = 1.5 : YM = 1 dim IM : IM = 800
dim A,B : ' Paramètres des fonctions à modifier ' ' ====================================================== ' Essayez ces valeurs A = 0.77777777777 : B= 0.1133333333 ' A = 0.1 : B = 0.84 ' A = 0.77789456123 : B = 0.123456789 ' A = 0.60123456789 : B = 0.10123456789 ' ======================================================
dim XO,YO,F,I,X,Y,XX ,xp,yp,k,r1,g1,b1
print_locate 0 ,650:print " Veuillez patienter..... et appuyez sur <ESC> pour arrêter.........." while scancode <> 27 XO = (XM-XI)*RND(1)+XI :YO = (YM-YI)*RND(1)+YI:X=XO:Y=YO r1 = 255 : g1 = 255 : b1 = 255 for i = 1 to im xx = (x*x-y*y)-a : y = 2*x*y-b : x = xx xp=lx*(x-xi)/(xm-xi) : yp=ly*(y-yi)/(ym-yi) if i < (im*6) : b1 = 0 : else : b1 = 255 : end_if if i < (im / 2): g1 = 0 : else : g1 = 255 : end_if if i < (im / 4): r1 = 0 : else : r1 = 255 : end_if 2d_pen_color r1,g1,b1 : 2d_point xp,yp : 2d_point lx-xp,ly-yp if (x*x+y*y) > 4 then i = im next i end_while print "Programme arrêté" end C'est juste une question d'habitudes et de façon de s'organuser | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: orbites Dim 4 Mar 2012 - 14:44 | |
| Merci jean claude pour ton aide. Oui jean_debord ce sont bien les orbites de l'ensemble de Mandelbrot. Je tente de republier mon code comme tu m'a indiqué jean claude. - Code:
-
' **************************************************** ' * * ' * ORBITES par Papydall * ' * * ' **************************************************** dim titre$ width 0,1000 : height 0,700 titre$ = "O R B I T E S" caption 0,"Papydall vous présente " + titre$
dim LX,LY,XI,XM,YI,YM,IM,A,B,XO,YO,F,I,X,Y,XX ,xp,yp,k,a$,r1,g1,b1
LX = 1000: LY = 700 Xi = -1.5 : XM = 1.5 : YI = -1 : YM = 1 : IM = 800 ' input " Valeur de la constante complexe : partie réelle A (0 --> 0.9) exp : 0.777777777 : ";A ' input " : partie imaginaire B (0 --> 0.9) exp : 0.111111111 : ";B ' ====================================================== ' Essayez ces valeurs A = 0.77777777777: B= 0.1133333333 ' A = 0.1: B = 0.84 ' A = 0.77789456123 B = 0.123456789 ' A = 0.60123456789 B = 0.10123456789 ' ======================================================
print_locate 0 ,650:print " Veuillez patienter....." : print " ESC pour arrêter.........." while scancode <> 27 XO = (XM-XI)*RND(1)+XI :YO = (YM-YI)*RND(1)+YI:X=XO:Y=YO r1 = 255 : g1 = 255 : b1 = 255 for i = 1 to im xx = (x*x-y*y)-a : y = 2*x*y-b : x = xx xp=lx*(x-xi)/(xm-xi) : yp=ly*(y-yi)/(ym-yi) if i < (im*6) b1 = 0 else b1 = 255 end_if if i < (im / 2) g1 = 0 else g1 = 255 end_if if i < (im / 4) r1 = 0 else r1 = 255 end_if 2d_pen_color r1,g1,b1 2d_point xp,yp : 2d_point lx-xp,ly-yp if (x*x+y*y) > 4 then i = im next i end_while print "Programme arrêté" end | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Orbites Dim 4 Mar 2012 - 14:54 | |
| C'est bon tu as réussis l'édition du code Je te suggères de regarder dans le manuel utilisateur la commande ON_CLOSE pour gérer la sortie de ton programme. A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Orbites Dim 4 Mar 2012 - 16:24 | |
| Pour t'aider si tu veux faire une version 3D, je te mets un squelette avec une fonction complétement arbitraire de mon cru (donc, le résultat de la fonction est un peu bidon, mais bon, pour illustrer l’utilisation en 3D, c'est largement suffisant ...) - Code:
-
' **************************************************** ' * Fonction en 3D v1.0 - Ecrit en Basic Panoramic * ' **************************************************** '
dim titre$ : titre$ = "O R B I T E S" width 0,1000 : height 0,700 : caption 0,"Papydall vous présente " + titre$
dim X,Y,Z
dim im : im = 400
' Définition de Pi Dim Pi : Pi = 4*ATN(1)
dim A,B : ' Paramètres des fonctions à modifier A=30
dim i,j,k,p,q,r,r1,g1,b1
scene3d 1 : full_space 1 : color 1,170, 170, 255 : ' le monde 3D avec fond bleu clair cam_x_position 50 : cam_y_position 50 : cam_z_position 100 : ' positionne la camera point_x_position 28 : point_y_position -100: point_z_position 100 : ' objectif dirigé vers le centre light_x_position 0 : light_y_position 0 : light_z_position 500 : ' positionne la lumiere
print_locate 0 ,650:print " Veuillez patienter..... et appuyez sur <ESC> pour arrêter.........."
r1 = 255 : g1 = 255 : b1 = 255 k=1 for i = -400 to 400 for j = -200 to 200 k=k+1 p = i / 400 * Pi : q = j / 400 * Pi x = cos(p) * cos (q) * A +(i*j / 1000) y = sin(p) * cos (q) * A + (i*j /1000) z = x*x*y*y/1000 + (i*j / 1000) r1 = abs(mod(i+x*2550,255)) : g1 = abs(mod(i+y*2550,255)) : b1 = abs(mod(255,i+z*2550)) 3d_sphere k,0.5 3d_color k,r1,g1,b1 3d_position k,x,y,z if key_down_code = 27 then terminate wait 1 next j next i print "Programme arrêté" end
Bon j'espère que ça t'aidera à faire de belles fonctions 3D (beaucoup plus jolies que la mienne ^^) | |
| | | Contenu sponsorisé
| Sujet: Re: Orbites | |
| |
| | | | Orbites | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |