//*************************************//
//******** created by mamo139 *********//
//*** http://mamo139.altervista.org ***//
//*************************************//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//*** strumenti genstione numeri complessi ***//
struct complesso
{
double r;
double i;
};
//*** strumenti gestione db
int ** crea_matrice(long x, long y);
void scrivi_matrice(char * file_name, int ** matrice, long xl, long yl);
//*** MAIN ***//
int main (void){
char db_name[]="burn";
//*********** PARAMETRI *************//
long larghezza = 2000;
long altezza = 2000;
long deep = 2000;
double y1 = 2;
double x0 = -2, x1 = 2;
double y0 = -2;
//**********************************//
//aggiustamento parametri
double agg_temp;
agg_temp=y1;
y1=y0*(-1);
y0=agg_temp*(-1);
//**********************************//
int ** matrice;
matrice = crea_matrice(larghezza,altezza);
//inizio elaborazione immagine
long x,y,d,i;
double real_x,real_y, colore;
struct complesso z,c,temp;
for(x=0;x<larghezza;x++){
real_x = ((x1-x0)/larghezza)*x+x0;
for(y=0;y<altezza;y++){
real_y = ((y1-y0)/altezza)*y+y0;
//analisi di mendelbrot
c.r = real_x;
c.i = real_y;
z.r = 0;
z.i = 0;
d = 0;
for(i=0;i<deep;i++){
if((z.r*z.r)+(z.i*z.i) > 4) {
d = i;
break;
}
temp.r = z.r;
temp.i = z.i;
if(temp.r<0)temp.r=temp.r*(-1);if(temp.i<0)temp.i=temp.i*(-1); //condizione burningship
z.r = (temp.r*temp.r) - (temp.i*temp.i) + c.r;
z.i = (temp.r*temp.i)*2 + c.i;
}
matrice[x][y] = d;
}
printf("%d%%\n",x*100/larghezza);
}
scrivi_matrice(db_name,matrice,larghezza,altezza);
printf("fine!");
getchar();
return 0;
}
//****** FUNZIONI *******//
int ** crea_matrice(long x, long y){
int ** array;
int i, j;
array = (int**)malloc(x * sizeof(int *));
for(i=0; i<x; i++) {
array[i] = (int*)malloc(y * sizeof(int *));
}
int i1,i2;
for(i1=0; i1<x; i1++)
for (i2=0; i2<y; i2++)
array[i1][i2] = 0;
return array;
}
void scrivi_matrice(char * file_name, int ** matrice, long xl, long yl){
FILE *s;
s = fopen(file_name,"wb");
int i1,i2;
for(i1=0; i1<xl; i1++)
for (i2=0; i2<yl; i2++)
fprintf(s,"%d%c",matrice[i1][i2],0);
fclose(s);
}