En la imagen se ve el proceso que va tomando el codigo de este fractal. Abajo el codigo.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int i;
Paso = 4096;
Signo = -1;
EjeX[1] = ClientWidth / 4; //getmax
EjeX[4097] = 3 * ClientWidth / 4;
EjeY[1] = EjeY[4097] = 2 * ClientHeight / 3;
randomize();
Canvas->MoveTo(EjeX[1], EjeY[1]);
Canvas->LineTo(EjeX[4097], EjeY[4097]);
Sleep(1000);
for(i = 1; i <= 13; i++)
{
//Repaint();
Refresh();
Canvas->TextOutA(5,5,"Curva fractal del dragon");
GenerarDragon(TColor(RGB(random(256), 0 ,0)));
Paso /= 2;
Sleep(1000);
}
///Sleep(10);
}
//---------------------------------------------------------------------------
void TForm1::GenerarDragon(TColor color)
{
int i, j, dx, dy;
j = Paso /2;
Canvas->Pen->Color = color;
Sleep(1000);
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;
Canvas->MoveTo(EjeX[i], EjeY[i]);
Canvas->LineTo(EjeX[i + j], EjeY[i + j]);
Canvas->MoveTo(EjeX[i + j], EjeY[i + j]);
Canvas->LineTo(EjeX[i + Paso], EjeY[i + Paso]);
Sleep(100);
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Timer1->Enabled = false;
}
//---------------------------------------------------------------------------
abajo archivo .h
class TForm1 : public TForm
{
__published: // IDE-managed Components
TTimer *Timer1;
TButton *Button1;
TButton *Button2;
void __fastcall Timer1Timer(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private: // User declarations
void GenerarDragon(TColor color);
int EjeX[4098], EjeY[4098], Paso, Signo;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
Muchas gracias amigo por tu gran ayuda!!!
ResponderEliminar