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
» PANORAMIC V 1
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Marc Aujourd'hui à 19:51

» Gestion d'un système client-serveur.
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Klaus Aujourd'hui à 16:52

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Froggy One Aujourd'hui à 11:16

» @Jack
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
L'ensemble de Mandelbrot projeté sur une sphère Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
L'ensemble de Mandelbrot projeté sur une sphère Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
L'ensemble de Mandelbrot projeté sur une sphère Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
L'ensemble de Mandelbrot projeté sur une sphère Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
L'ensemble de Mandelbrot projeté sur une sphère Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
L'ensemble de Mandelbrot projeté sur une sphère Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
L'ensemble de Mandelbrot projeté sur une sphère Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
L'ensemble de Mandelbrot projeté sur une sphère Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
L'ensemble de Mandelbrot projeté sur une sphère Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
L'ensemble de Mandelbrot projeté sur une sphère Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
L'ensemble de Mandelbrot projeté sur une sphère Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

 

 L'ensemble de Mandelbrot projeté sur une sphère

Aller en bas 
2 participants
AuteurMessage
papydall

papydall


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

L'ensemble de Mandelbrot projeté sur une sphère Empty
MessageSujet: L'ensemble de Mandelbrot projeté sur une sphère   L'ensemble de Mandelbrot projeté sur une sphère EmptyLun 26 Avr 2021 - 4:38

Bonjour à tous.
Après plus de trois mois d’inactivité et pour mon message N° 6666  Twisted Evil , je vous propose l’ensemble de Mandelbrot projeté sur une sphère.
Quelle drôle d’idée !
Ce code est destiné au compilateur qui s’en sort plutôt assez bien.
Si vous l’utilisez avec l’interpréteur, soyez un petit peu patient.


Code:

rem ============================================================================
rem        Mandel_Sur_Sphere
rem ============================================================================

DIM MinMax(3, 2)
DIM u(3)
DIM v(3)
DIM w(3)
DIM Alfa
DIM Beta
DIM Offx
DIM Offy
DIM Zoom
DIM ScaleMdb, module, xm, ym, zx0, zy0, cx, cy, x, y,z
Alfa = 30 * Pi / 180
Beta = 20 * Pi / 180
Offx = 0
Offy = 0
Zoom = 15

MinMax(1, 1) = -30
MinMax(1, 2) = 30
MinMax(2, 1) = -30
MinMax(2, 2) = 30
MinMax(3, 1) = -30
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)
width 0,700 : height 0,600
picture 10 : full_space 10 : 2d_target_is 10 :color 10,0,0,0
caption 0,"Mandelbrot sur sphère"
sphere()
caption 0,caption$(0) + " : terminé"
end
rem ============================================================================
FNC Mandelbrot(p, q)
    dim_local np,xn,yn,dx,dy ,varmdb
    ScaleMdb = 1
    xm = 1.75
    ym = 0

    zx0 = p / (Pi / 2) * 2 * ScaleMdb - xm
    zy0 = q / (Pi / 2) * 2 * ScaleMdb - ym

    cx = zx0
    cy = zy0

    x = zx0
    y = zy0

    FOR NP = 1 TO 25
        xn = x*x - y*y + cx
        yn = 2 * x * y + cy
        Module = SQR(xn * xn + yn * yn)
        dx = xn - x
        dy = yn - y
        x = xn
        y = yn
        IF Module > 2 then result 0 : exit_fnc    
    NEXT NP
    VarMdb = SQR(dx*dx + dy*dy)
    result 4.5 - 4.5 * LOG(VarMdb + 1E-12)

END_FNC
rem ============================================================================

SUB Sphere()
    dim_local r,i,j,p,q,ncol,colmdb
    R = 30

    FOR i = -400 TO 400 step 2       : ' pour diminuer le ...
        FOR j = -200 TO 200 step 2   : ' ... temps du tracé
            p = i / 400 * Pi
            q = j / 400 * Pi
            NCol = 0
            ColMdB = Mandelbrot(p, q)
            IF ColMdB <> 0 THEN NCol = 1

            x = COS(p) * COS(q) * R
            y = SIN(p) * COS(q) * R
            z = SIN(q) * R

            Plot(x, y, z, NCol)

        NEXT j
    NEXT i

END_SUB
rem ============================================================================
SUB Plot(x, y, z, NCol)
    DIM_LOCAL xp(3),nx,ny

    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

    NX = INT(320 * (xp(2) - Offx) * Zoom / 640 + 320 + .5)
    NY = INT(-240 * (xp(3) - Offy) * Zoom / 480 + 240 + .5)
    if ncol = 1
       2d_pen_color 255,0,0
    else
       2d_pen_color 255,255,0
    end_if
    IF xp(1) >= 0 THEN 2d_point NX, NY : display

if scancode = 27 then terminate

END_SUB
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

L'ensemble de Mandelbrot projeté sur une sphère Empty
MessageSujet: Re: L'ensemble de Mandelbrot projeté sur une sphère   L'ensemble de Mandelbrot projeté sur une sphère EmptyLun 26 Avr 2021 - 9:00

Merci papydall !

Petite suggestion, pour gagner un peu (?) de vitesse dans la fonction Mandelbrot :

- utiliser le carré du module (on gagne 2 SQR)

- supprimer VarMdb et retourner un nombre constant puisque tous les points de l'ensemble ont la même couleur (on gagne 1 LOG + quelques opérations)

Code:

    FOR NP = 1 TO 25
        xn = x*x - y*y + cx
        yn = 2 * x * y + cy
        Module = xn * xn + yn * yn
        dx = xn - x
        dy = yn - y
        x = xn
        y = yn
        IF Module > 4 then return 0    
    NEXT NP
    return 1
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

papydall


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

L'ensemble de Mandelbrot projeté sur une sphère Empty
MessageSujet: Re: L'ensemble de Mandelbrot projeté sur une sphère   L'ensemble de Mandelbrot projeté sur une sphère EmptyLun 26 Avr 2021 - 17:34

Merci Jean pour ta petite suggestion.
Mais tu t’es melangé les pinceaux (crocodile basic en est la cause !)
Il faut un result  (pano) au lieu de return  (croco) dans la FNC Mandelbrot(p,q).
En plus il faut ajouter exit_fnc, sinon bonjour ’INF’ n’est pas une valeur en virgule flottante correcte

Bon voici le nouveau code vu et corrigé.

Code:

rem ============================================================================
rem        Mandel_Sur_Sphere
rem ============================================================================

DIM MinMax(3, 2)
DIM u(3)
DIM v(3)
DIM w(3)
DIM Alfa
DIM Beta
DIM Offx
DIM Offy
DIM Zoom
DIM ScaleMdb, module, xm, ym, zx0, zy0, cx, cy, x, y,z
Alfa = 30 * Pi / 180
Beta = 20 * Pi / 180
Offx = 0
Offy = 0
Zoom = 15

MinMax(1, 1) = -30
MinMax(1, 2) = 30
MinMax(2, 1) = -30
MinMax(2, 2) = 30
MinMax(3, 1) = -30
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)
width 0,700 : height 0,600
picture 10 : full_space 10 : 2d_target_is 10 :color 10,0,0,0
caption 0,"Mandelbrot sur sphère"
sphere()
caption 0,caption$(0) + " : terminé"
end
rem ============================================================================
FNC Mandelbrot(p, q)
    dim_local np,xn,yn,dx,dy ,varmdb
    ScaleMdb = 1
    xm = 1.75
    ym = 0

    zx0 = p / (Pi / 2) * 2 * ScaleMdb - xm
    zy0 = q / (Pi / 2) * 2 * ScaleMdb - ym

    cx = zx0
    cy = zy0

    x = zx0
    y = zy0

    
    FOR NP = 1 TO 25
        xn = x*x - y*y + cx
        yn = 2 * x * y + cy
        Module = xn * xn + yn * yn
        dx = xn - x
        dy = yn - y
        x = xn
        y = yn
        IF Module > 4 then result 0 : exit_fnc  
    NEXT NP
    result 1

END_FNC
rem ============================================================================

SUB Sphere()
    dim_local r,i,j,p,q,ncol,colmdb
    R = 30

    FOR i = -400 TO 400 step 2       : ' pour diminuer le ...
        FOR j = -200 TO 200 step 2   : ' ... temps du tracé
            p = i / 400 * Pi
            q = j / 400 * Pi
            NCol = 0
            ColMdB = Mandelbrot(p, q)
            IF ColMdB <> 0 THEN NCol = 1

            x = COS(p) * COS(q) * R
            y = SIN(p) * COS(q) * R
            z = SIN(q) * R

            Plot(x, y, z, NCol)

        NEXT j
    NEXT i

END_SUB
rem ============================================================================
SUB Plot(x, y, z, NCol)
    DIM_LOCAL xp(3),nx,ny

    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

    NX = INT(320 * (xp(2) - Offx) * Zoom / 640 + 320 + .5)
    NY = INT(-240 * (xp(3) - Offy) * Zoom / 480 + 240 + .5)
    if ncol = 1
       2d_pen_color 255,0,0
    else
       2d_pen_color 255,255,0
    end_if
    IF xp(1) >= 0 THEN 2d_point NX, NY : display

if scancode = 27 then terminate

END_SUB
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

L'ensemble de Mandelbrot projeté sur une sphère Empty
MessageSujet: Re: L'ensemble de Mandelbrot projeté sur une sphère   L'ensemble de Mandelbrot projeté sur une sphère EmptyLun 26 Avr 2021 - 17:42

Effectivement, j'avais fait les tests avec Crocodile Basic !

Enfin, l'important c'est qu'on s'y retrouve Smile
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

papydall


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

L'ensemble de Mandelbrot projeté sur une sphère Empty
MessageSujet: Re: L'ensemble de Mandelbrot projeté sur une sphère   L'ensemble de Mandelbrot projeté sur une sphère EmptyLun 26 Avr 2021 - 17:47

Il m’arrive souvent de m’emmêler les jambes aussi !
 l'important c'est qu'on s'y retrouve comme tu l’as dit.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé





L'ensemble de Mandelbrot projeté sur une sphère Empty
MessageSujet: Re: L'ensemble de Mandelbrot projeté sur une sphère   L'ensemble de Mandelbrot projeté sur une sphère Empty

Revenir en haut Aller en bas
 
L'ensemble de Mandelbrot projeté sur une sphère
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» la sphere s'ovalise
» Orbites de l’ensemble de Mandelbrot
» Encore une fractale de Mandelbrot.
» Ensemble de Mandelbrot : [c(z^p - z^q)-1]^2
» Zoom sur  Mandelbrot

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: