Fractal del Dragón.
Fractal
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;
}
}