sábado, 10 de mayo de 2014

Fractal Dragon

Fractal del Dragón.



Fractal


En la naturaleza también aparece la geometría fractal, como en esta romanescu.
Un fractal es un objeto geométrico cuya estructura básica, fragmentada o irregular, se repite a diferentes escalas.1 El término fue propuesto por el matemático Benoît Mandelbrot en 1975 y deriva del Latín fractus, que significa quebrado o fracturado. Muchas estructuras naturales son de tipo fractal. La propiedad matemática clave de un objeto genuinamente fractal es que su dimensión métrica fractal es un número no entero.







Esta aplicacion muestra el fractal del dragon

Metodo que genera el dragon

void TForm1::GenerarDragon(TColor color)
{
       int i,j,dx,dy;
       j=Paso/2;
       TColor colores[]={clRed,clYellow,clBlack,clAqua,clBlue,clGreen};
       //TColor colores []= {clYellow, clRed,clBlue,clBlack, };
       //this->Canvas->Pen->Color;
       this->Canvas->Font->Color =colores[random(5)] ;
        for(i=1;i<=4096;i+=Paso)
        {
        dx=EjeX[Paso+i]-EjeX[i];
        dy=EjeY[Paso+i]-EjeY[i];
        Signo*=-1;
        EjeX[i + j] = EjeX[i] + (dx + (dy * Signo))/2;
        EjeY[i + j] = EjeY[i] + (dy - (dx * Signo))/2;
        color +=(TColor) i * 5;
        //this->Canvas->Pen->Color = color;
        // this->Canvas->Font->Color =clYellow;//colores[random(6)] ;
       this->Canvas->MoveTo(EjeX[i],EjeY[i]);
        this->Canvas->LineTo(EjeX[i+j],EjeY[i+j]);
        this->Canvas->MoveTo(EjeX[i+j],EjeY[i+j]);
        this->Canvas->LineTo(EjeX[i+Paso],EjeY[i+Paso]);

        Sleep(100); // tiempo de ejecucion

        }
}


// numero de repeticiones para el dragon

        int rep=6;
        this->Repaint();
        Paso=4096;
        Signo=-1;
        EjeX[1]=this->ClientWidth/8;
        EjeX[4097]=2*this->ClientWidth/8;
        EjeY[1]=EjeY[4097]=2*this->ClientHeight/3;

        this->Canvas->Pen->Color=clRed;
        this->Canvas->MoveTo(EjeX[1],EjeY[1]);
        this->Canvas->LineTo(EjeX[4097],EjeY[4097]);
        for(int i=1;i<=rep;i++)
        {
        Repaint();
        Canvas->TextOutA(5,5,"curva fractal");
        GenerarDragon((TColor)i);

        Paso/=2;

              if(i== rep)
                {
                Timer1->Enabled=false;
                }
        }

No hay comentarios:

Publicar un comentario