Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Conjunto de mandelbrot

Estas en el tema de Conjunto de mandelbrot en el foro de C/C++ en Foros del Web. Bueno... Estoy aprendiendo C y tengo que hacer un proyecto en el cual tengo que armar un programita que muestre el conjunto de mandelbrot.. el ...
  #1 (permalink)  
Antiguo 22/10/2011, 20:44
 
Fecha de Ingreso: junio-2011
Mensajes: 5
Antigüedad: 13 años, 5 meses
Puntos: 0
Conjunto de mandelbrot

Bueno... Estoy aprendiendo C y tengo que hacer un proyecto en el cual tengo que armar un programita que muestre el conjunto de mandelbrot.. el conjunto de mandelbrot es un fractal (uno de los mas conocidos)
este se muestra generalmente con el "algoritmo del tiempo de escape"
Bueno mi problema es el siguiente..
Yo puedo crear el conjunto .. lo muestro todo genial. La idea es que al hacer click en una parte de la imagen el cojunto se agrande "zoom" que se obtiene aumentando el numero de el numero que divide la funcion.
y que el lugar donde yo hize click se me situe en el centro de la imagen para poder haci hacerlo controlable...
yo logro hacer click y que se hacerque.. el problema es que no logro controlarlo.
Como puedo hacer para que al hacer click mi conjunto vaya al medio?
yo se que devo sumar y restar a la funcion para moverla pero no se como sacar el calculo de cuanto le devo sumar o restar :S
si alguien me puede ayudar genial por que nesecito entregar este proyecto. un saludo y gracias de antemano.
Les dejo el codigo.



Código:
#include<winbgim.h>

#include<stdlib.h>

#include<math.h>
void waitForLeftMouseClick();

int main()
{
int i,m,n,R,G,B,x,y,c,div,primero=1;
float a,aa,b,bb,ca,cb,iteraciones,moverx=0,movery;
initwindow(800,600);
outtextxy(100, 150, "Programa diseñado por Hombre Federico Joel 4° Año 1° divicion Computacion");
outtextxy(300, 300, "Haga CLICK para comenzar");
c=1;
do
{
clearmouseclick(WM_LBUTTONDOWN);
    const int DELAY = 50;
    while (!ismouseclick(WM_LBUTTONDOWN))
        delay(DELAY);
    getmouseclick(WM_LBUTTONDOWN, x, y);
c=c*2;
div=(300*(c));


if (x>400)
moverx=(moverx+(-(x-400)));   */ aqui deveria de sumar y restar para moverla
else
moverx=(moverx+(400-x));       */ funcion y asi lograr hacerla manejable
if (y>300)
movery=(movery+(-(y-300)));
else
movery=(movery+(300-y));

   
for (m=0;m<800;m++)
	{        
		for (n=0;n<600;n++)
		{ 
            i = 0;
            iteraciones=300;
          
            ca = (float) (m - (400+moverx))/div;
			cb = (float) (n - (300+movery))/div;
			a = b = primero = 0;
			
			while ((i < iteraciones) && (sqrt(a*a+b*b) <= 2))
			{
                aa = a*a - b*b + ca;
				bb = 2*a*b + cb;
				a = aa;
				b = bb;
				i++;
		
		    }
		    R=i;
		    G=i+30;
		    B=0;
		   if(i==300)
		  putpixel(m,n,BLACK);
          else
          putpixel(m,n,COLOR(R,G,B)); 
            	          
     		    
        }
    }


}while(!kbhit());

outtextxy(300, 300, "Programa terminado");
closegraph();
}

Etiquetas: conjunto, const, funcion, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:15.