Exemplo n.º 1
0
fenetrebuddha::fenetrebuddha(QWidget *parent) :
    QWidget(parent), pixmap(1200,1200)
{
    setFixedSize(1100,650);
    QGraphicsScene *scene = new QGraphicsScene();
    QGraphicsView *view = new QGraphicsView(scene,this);
    for (int i=-600;i<=600;i++)  //on commence par un carré
    {
        for (int j=-600;j<=600;j++)
        {
            int iteration_max = 25;
            int pixel_x=0;
            int pixel_y=0;
            double x=0;
            double y=0;
            double a=0;
            int h=0;
            int dummy=0;
            double liste_buddha_x[25]={0};  //ici 25 est l'itération maximale
            double liste_buddha_y[25]={0};
            while (h<iteration_max && x*x+y*y<4)
            {
                a=x;
                x=x*x-y*y+((double)i)/300;
                y=2*a*y+((double)j)/300;
                liste_buddha_x[h]=x;
                liste_buddha_y[h]=y;
                h++;
            }
            if (h<iteration_max)
            {
                for (int k=0; k<=h;k++)
                {
                    QPainter *p_fractale_3 = new QPainter(&pixmap);
                    p_fractale_3->setPen(QPen(Qt::black));
                    pixel_x=300*liste_buddha_x[k]+600;
                    pixel_y=300*liste_buddha_y[k]+600;
                    p_fractale_3->drawPoint(pixel_x,pixel_y);
                    delete p_fractale_3;
                }
            }
            else
            {
                dummy=1;
            }
        }
    }
    scene->addPixmap(pixmap);
    view->move(10,10);
}
fenetremandelbrot::fenetremandelbrot(QWidget *parent) :
    QWidget(parent) , pixmap(1200,1200)
{
    setFixedSize(1100,650);
    QGraphicsScene *scene = new QGraphicsScene();
    QGraphicsView *view = new QGraphicsView(scene,this);
    QPainter *p_fractale = new QPainter(&pixmap);
    //le compteur est initialisé à 0. Il va servir à l'it_max
    int a[2];
    int c[2];
    a[0]=0;
    a[1]=0;
    c[0]=1200;
    c[1]=1200; // On commence par le carré classique
    vector<vector<int> > mandelbrot = Mandelbrot(100, a, c); //ici l'iteration max est 100.
    int compteur = 0;
    while (compteur<1200*1200)
    {
        if (mandelbrot[compteur][2]==100) //100 est l'iteration max ici
        {
            p_fractale->setPen(QPen(Qt::black));
            p_fractale->drawPoint(mandelbrot[compteur][0],mandelbrot[compteur][1]);
        }
        if (1<=mandelbrot[compteur][2] && mandelbrot[compteur][2]<15)
        {
            p_fractale->setPen(QPen(Qt::darkBlue));
            p_fractale->drawPoint(mandelbrot[compteur][0],mandelbrot[compteur][1]);
        }
        if (15<=mandelbrot[compteur][2] && mandelbrot[compteur][2]<30)
        {
            p_fractale->setPen(QPen(Qt::blue));
            p_fractale->drawPoint(mandelbrot[compteur][0],mandelbrot[compteur][1]);
        }
        if (30<=mandelbrot[compteur][2] && mandelbrot[compteur][2]<45)
        {
            p_fractale->setPen(QPen(Qt::darkCyan));
            p_fractale->drawPoint(mandelbrot[compteur][0],mandelbrot[compteur][1]);
        }
        if (45<=mandelbrot[compteur][2] && mandelbrot[compteur][2]<100)
        {
            p_fractale->setPen(QPen(Qt::cyan));
            p_fractale->drawPoint(mandelbrot[compteur][0],mandelbrot[compteur][1]);
        }
        compteur++;
    }
    delete p_fractale;
    scene->addPixmap(pixmap);
    view->move(10,10);
}