codice:
#include <cstdlib>
#include <iostream>
#include <graphics.h>
#include <math.h>
using namespace std;
void quad(double v[])
{
double a,b;
a=v[0]*v[0]-v[1]*v[1];
b=2*v[0]*v[1];
v[0]=a;
v[1]=b;
}
double modulo(double v[])
{
return sqrt(v[0]*v[0]+v[1]*v[1]);
}
void colora(double v[], double zoom,int f[],double d[]) //f grandezza finestra, d centro del grafico
{
double c[]={v[0]/zoom,v[1]/zoom}; //rimane costante
double b[]={v[0]/zoom,v[1]/zoom}; //verrà modificato
int i=0;
while (i<50 && b[0]<1e+70 && b[1]<1e+70) {
quad(b);
b[0]=b[0]+c[0];
b[1]=b[1]+c[1];
i++;
}
if (b[0]<1e+40) {
if (b[0]<0.2 && b[0]>-0.2)
putpixel(int(-d[0])+f[0]/2+int(v[0]),int(-d[1])+f[1]/2+int(v[1]),COLOR(10,10,int(b[0]*1000)));
else
putpixel(int(-d[0])+f[0]/2+int(v[0]),int(-d[1])+f[1]/2+int(v[1]),COLOR(int(b[0]*100),int(b[1]*10),10));// putpixel(400+int(v[0]),300+int(v[1]),COLOR(int(b[0]*10),int(b[0]*10),int(b[1]*10)));
}
}
int main(int argc, char *argv[])
{
int GRAY = COLOR(127,127,127);
double zoom,c[]={0,0};
int f[]={800,600};
cout<<"Dammi lo zoom"<<endl;
cin>>zoom;
cout<<"Dammi il centro"<<endl;
cin>>c[0]; //-1.787 il migliore x adesso
cin>>c[1];
c[0]=c[0]*zoom;
c[1]=c[1]*zoom;
initwindow(f[0],f[1]); //open a NxM graphics window. Its initial value is page 0
setbkcolor(COLOR(0,0,0));//set the background color for page 0 (but does not draw it!)
cleardevice();
double s[]={2,3};
int z=5000;
int i=-f[0]/2+int(c[0]),j=-f[1]/2+int(c[1]);
while (i<f[0]/2+c[0]) {
j=-f[1]/2+c[1];
while (j<f[1]/2+c[1]) {
s[0]=i;
s[1]=j;
colora(s,zoom,f,c);
j++;
}
i++;
}
for (int k=0; k<f[0]; k++)
putpixel(k,f[1]/2-c[1],COLOR(255,255,255));
for (int k=0; k<f[1]; k++)
putpixel(f[0]/2-c[0],k,COLOR(255,255,255));
system("PAUSE");
return EXIT_SUCCESS;
}
Ecco, come posso salvare in una bitmap l'immagine che viene visualizzata?