IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Ensembles de Julia [2D/3D]


Sujet :

Qt

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 77
    Points : 30
    Points
    30
    Par défaut Ensembles de Julia
    Bonjour,


    J'essaye de dessiner des ensembles de Julia à l'aide de Qt mais je rencontre un problème.

    J'obtiens bien une fractale mais ça ressemble pas à un ensemble de Julia...


    Je vous met un bout de code qui pour moi est susceptible de poser problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
     
    //Méthode censée dessiner l'ensemble de Juli
    //cReel et cIma partie réel et imaginaire du nombre complexe c qui définit un ensemble de Julia,
    //nbIteration c'est le nombre de fois qu'on itère la suite avant de s'arrêter, 
    //zoom c'est un facteur pour convertir les coordonnées d'un pixel en coordonnées du plan complexe, exemple si zoom=0.01,  100 pixel correspondent à 1.
    void ZoneDessin::paintJulia(QPainter &painter, double cReel, double cIma, int nbIteration, double zoom )
    {
     
        double a, b; //partie réel et imaginaire de la suite.
     
        for (int i=-height()/2; i<height()/2; i++){      //On boucle sur tout les pixels de l'écran:
            for (int j=-width()/2; j<=width()/2; j++){ //on commence par celui en haut à gauche et on fini par celui en bas à droite
                                                       //(j'ai translaté le painter pour que l'origine soit au centre de l'écran avant)
                a=j*zoom;//on convertit les coordonnées du pixel en coordonées cartésiennes.
                b=i*zoom;
     
                if(appartientJulia(a, b, cReel, cIma, nbIteration)){//Si le point appartient  à l'ensemble de julia
                    painter.drawPoint(QPoint(j,i)); //on le peint en blanc...
     
     
                }
     
     
            }
     
        }
     
    }
     
     
    bool ZoneDessin::appartientJulia(double a, double b, double cReel, double cIma,int nbIteration)
    {
        double module;
        for(int i=0; i<nbIteration; i++){
            a=a*a-b*b+cReel;   //on calcul la suite jusqu'au nbIteration-ième terme
            b=2*a*b+cIma;
     
           module=sqrt(a*a+b*b);
     
            if(module>2)  //Si le module devient supérieur à 2 alors on est sur que la suite diverge
                return false;
     
     
        }
     
        return true; //Sinon on est pas sur mais on fait l'approximation qu'elle converge
    }

    Et j'ai notamment remarqué un truc étonnant, si je modifie la deuxième méthode comme suis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    bool ZoneDessin::appartientJulia(double a, double b, double cReel, double cIma,int nbIteration)
    {
        double module;
        for(int i=0; i<nbIteration; i++){
            a=a*a-b*b+cReel;   
            b=2*a*b+cIma;
     
           }
     
        module=sqrt(a*a+b*b);
        if(module>2)  
            return false;
        else
            return true;
     
    }
    Et bien ça me met tout en blanc, donc ça passe jamais par false !?





    Merci pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a=a*a-b*b+cReel;
    b=2*a*b+cIma;
    est erroné

    il faut ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double temp = a * a - b * b + cReel;
    b = 2.0 * a * b + cIma;
    a = temp;
    Pour une implémentation efficace, regardez l'exemple de Mandelbrot dans les exemples de Qt.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par nosleduc Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a=a*a-b*b+cReel;
    b=2*a*b+cIma;
    est erroné

    il faut ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double temp = a * a - b * b + cReel;
    b = 2.0 * a * b + cIma;
    a = temp;
    ah oui effectivement je suis bête -_-, merci


    Citation Envoyé par nosleduc Voir le message
    Pour une implémentation efficace, regardez l'exemple de Mandelbrot dans les exemples de Qt.
    Ouais c'est ce que j'ai fait en premier, mais j'y connais rien en multithreading, donc j'ai rien compris.

    Et je galère déjà assez avec des choses simples

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    La stl fournie la class std::complex. Avant de chercher à optimizer (si vraiment c'est nécessaire), tu devrais l'utiliser
    Sinon regarde le premier défis Qt c'est sur les fractale.
    Y as un code trop top (normal c'est le mien ) qui sert de base.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par yan Voir le message
    La stl fournie la class std::complex. Avant de chercher à optimizer (si vraiment c'est nécessaire), tu devrais l'utiliser
    Sinon regarde le premier défis Qt c'est sur les fractale.
    Y as un code trop top (normal c'est le mien ) qui sert de base.
    Il est où ton code ?
    Y a rien ici: http://qt.developpez.com/defis/01-buddhabrot/resultats/

    Edit: quelques images pour faire saliver.


    voila ce qu'on obtient en zoomant un peu






    par contre mon système pour se déplacer est un peu foireux. (avec les flèches du clavier)

    J'aurais voulu qu'en cliquant à un endroit ça centre la vue sur cet endroit mais j'y arrivais pas.

  6. #6
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Le lien s'appelle : Toutes les sources des candidats sont disponibles !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par johnlamericain Voir le message
    Le lien s'appelle : Toutes les sources des candidats sont disponibles !
    oui c'est ce que j'avais déjà téléchargé mais y a pas de Yan dedans.

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Je parle de celui de cette page
    http://qt.developpez.com/defis/01-buddhabrot/
    ici

  9. #9
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Citation Envoyé par Cpowa Voir le message
    oui c'est ce que j'avais déjà téléchargé mais y a pas de Yan dedans.
    Evidemment, en tant que membre du jury il n'a pas participer au défi
    Mais tu trouveras son code de départ ici.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ensemble de Julia
    Par thy-sins dans le forum Général Java
    Réponses: 3
    Dernier message: 02/02/2012, 12h25
  2. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07
  3. [Kylix] ensemble
    Par chico dans le forum EDI
    Réponses: 3
    Dernier message: 17/07/2002, 12h22
  4. Réponses: 3
    Dernier message: 12/06/2002, 19h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo