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

C# Discussion :

Problème de définition d'origine d'une image bitmap


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 110
    Points : 57
    Points
    57
    Par défaut Problème de définition d'origine d'une image bitmap
    Bonsoir,

    Pour passer le temps, je m'amuse à faire dessiner des fractales.
    Le dessin est bien généré mais là ou je cale c'est pour dire dessine à partir de cet endroit en l'occurence à partir du millieu de l'axe des ordonnées et ensuite d'avancer. Pour le moment le dessin débute à partir du point(0,0) de l'image du coup j'ai pas la fractale au complet et ça m'embête un petit peu.

    Voici le code actuel :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    public static void MandelBrotFractal()
            {
                double x1 =-2.1;
                double x2 =0.6;
                double y1 =-1.2;
                double y2 = 1.2;
     
                int zoom = 100;
                int iteration_max = 50;
     
                double image_x =(x2-x1)*zoom;
                double image_y =(y2-y1)*zoom;
     
                if (!Directory.Exists("c:\\Fractal"))
                {
                    Directory.CreateDirectory("c:\\Fractal");
                }
     
                if (File.Exists("c:\\Fractal\\MandelBrotFractal.bmp"))
                {
                    File.Delete("c:\\Fractal\\MandelBrotFractal.bmp");
                }
     
                Bitmap img = new Bitmap((int)image_x, (int)image_y);
                img.MakeTransparent(Color.Black);
     
                Graphics bufferGfx = Graphics.FromImage(img);
     
                bufferGfx.Clear(Color.FromArgb(255, 255, 255)); //remplis le bitmap d'un fond blanc
     
                DateTime start = DateTime.Now;
     
                for (int x = 0; x < image_x; x++)
                {
                    for (int y = 0; y < image_y; y++)
                    {
                        double c_r = x / (zoom + x1);
                        double c_i = y / (zoom + y1);
                        double z_r = 0;
                        double z_i = 0;
                        int i = 0;
     
                        do
                        {
                            double tmp = z_r;
                            z_r = (z_r * z_r) - (z_i * z_i) + c_r;
                            z_i = (2 * tmp * z_i) + c_i;
                            i++;
                        }while((z_r*z_r)+(z_i*z_i)<4 && i<iteration_max);
     
                        if (i == iteration_max)
                        {
                            img.SetPixel(x, y, Color.Red);
                        }
                    }
                }
     
                TimeSpan totalTime = start - DateTime.Now;
     
                Console.WriteLine(totalTime);
                img.Save("c:\\Fractal\\MandelBrotFractal.bmp");
            }

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 648
    Points : 2 170
    Points
    2 170
    Par défaut
    Bonjour,

    il suffirait de changer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                        if (i == iteration_max)
                        {
                            img.SetPixel(x + img.Width / 2, y + img.Height / 2, Color.Red);
                        }
    Le dessin commence bien au milieu mais (je n'y connais rien aux fractales) , ça ne se dessine que dans un quart du repère quand même.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 110
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par PixelJuice Voir le message
    Bonjour,

    il suffirait de changer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                        if (i == iteration_max)
                        {
                            img.SetPixel(x + img.Width / 2, y + img.Height / 2, Color.Red);
                        }
    Ho punaise c'est le même que sur un écran en fait pour centrer une forme j'aurai pu y penser.

    Citation Envoyé par PixelJuice Voir le message
    Le dessin commence bien au milieu mais (je n'y connais rien aux fractales) , ça ne se dessine que dans un quart du repère quand même.
    Je pense, j'en suis certain même, que c'est parce qu'il me donne des pixels en abscisse et ordonnée qui sont négatives. Du coup on a que 1 quart du cercle.
    Du coup il faudrait jouer sur une conversion à partir du centre de l'image qui serait : (0,0) ?
    Mais comment faire pour trouver le pixel négatif ?

Discussions similaires

  1. [ImageMagick] Générer un texte sur une image
    Par kevinf dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/11/2007, 14h21
  2. [ImageMagick] Problème dans le code pour redimensionner une image
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 08/06/2007, 14h06
  3. Problème technique pour la lié une image bitmap
    Par Jace le programmeur dans le forum Access
    Réponses: 1
    Dernier message: 22/05/2007, 16h11
  4. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21
  5. [XSLFO] Redimensionnement original d'une image ?
    Par elitost dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/09/2005, 13h49

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