Hola amigos! En esta ocasión vamos a continuar rápidamente con el tema de los fractales y programaremos otro diferente a los que ya hemos hecho anteriormente, hoy le toca el turno al fractal de Mandelbrot.
Bien pues para comenzar lo primero es que tenemos que pintar la Forma de color (esto es opcional), damos clic en la propiedad Color de la forma y elegimos clNavy. Ahora colocamos un botón sobre la forma y eso es todo lo que necesitamos para comenzar a programar. Nuestra forma debería verse mas o menos de la siguiente manera:
Con la interfaz ya lista comenzamos entonces con la programación del fractal de Mandelbrot. Primero nos vamos a el archivo H y en la parte pública declaramos las siguientes variables que utilizaremos más adelante:
int maxX, maxY, Limite, i, j, Pasos, Terminar;
double PasoX, PasoY, PosX, PosY, OrigX, OrigY, DimX, DimY, IterX, IterY, TempX;
Esto será bastante sencillo y rápido chavos ahora nos cambiamos al archivo .cpp, o nos vamos a la Forma y damos doble clic en el botón para abrir su evento OnClic y ahí escribimos el siguiente código que será el que nos formará el efecto de Mandelbrot:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
maxX = Form1->ClientWidth;
maxY = Form1->ClientHeight;
Limite = 100;
OrigX = -2.0;
OrigY = -1.25;
DimX = 0.5;
DimY = 1.25;
PasoX = ( DimX - OrigX ) / maxX;
PasoY = ( DimY - OrigY ) / maxY;
for ( i = 0; i <= maxX; i++)
for ( j = 0; j <= maxY; j++)
{
PosX = OrigX + i * PasoX;
PosY = OrigY + j * PasoY;
IterX = 0.0;
IterY = 0.0;
Terminar = Pasos = 0;
while ( !Terminar )
{
TempX = ( IterX * IterX ) - ( IterY * IterY ) + PosX;
IterY = 2 * ( IterX * IterY ) + PosY;
IterX = TempX;
Pasos++;
if ( hypot( fabs(IterX), fabs(IterY)) >= 2.0)
Terminar++;
if ( Pasos >= Limite )
Terminar++;
}
if ( Pasos < Limite )
Canvas->Pixels[i][j] = (TColor)Pasos;
}
}
//---------------------------------------------------------------------------
Y pues aunque no lo crean es todo chavos, ahora solo tenemos que compilar nuestra programa y correrlo para ver su funcionamiento y si todo salió bien nuestra aplicación debería verse así:
Y por hoy eso fue todo amigos nos vemos la próxima ocasión en la que programaremos otro fractal más para que sigan viendo las diferentes opciones que tenemos en este amplio tema. Hasta la vista chavos!.
No hay comentarios:
Publicar un comentario