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.
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
L'ensemble de Mandelbrot projeté sur une sphère Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
L'ensemble de Mandelbrot projeté sur une sphère Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
L'ensemble de Mandelbrot projeté sur une sphère Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
L'ensemble de Mandelbrot projeté sur une sphère Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
L'ensemble de Mandelbrot projeté sur une sphère Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
L'ensemble de Mandelbrot projeté sur une sphère Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
L'ensemble de Mandelbrot projeté sur une sphère Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
L'ensemble de Mandelbrot projeté sur une sphère 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
-55%
Le deal à ne pas rater :
Friteuse sans huile – PHILIPS – Airfryer HD9200/90 Série 3000
49.99 € 109.99 €
Voir le deal

 

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

Aller en bas 
2 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
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 : 1266
Age : 70
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 : 7017
Age : 74
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 : 1266
Age : 70
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 : 7017
Age : 74
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
-
» Encore une fractale de Mandelbrot.
» peut-on texturer l'interieur d'une sphere ?
» Mandelbrot en pseudo 3D
» Ensemble de Mandelbrot : [c(z^p - z^q)-1]^2
» Orbites de l’ensemble de 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: