Soyez le premier à donner votre avis sur cette source.
Snippet vu 6 495 fois - Téléchargée 31 fois
#include <stdio.h> #include <math.h> FILE *picture; int main(int argc, char *argv[]) { //creation de l'entete du bitmap///////////////////////////////// short haut,larg; //hauteur et largeur de l'image en pixel char nb0; //nb de zero de fin de lign du bitmap char title[7]; //tableau contenant les paramètre de l'entete title[0]=66; // caractère "B" title[1]=77; // "M" title[2]=0; title[3]=54; //divers caractères situés en entete title[4]=40; title[5]=01; title[6]=24; //codage des couleurs en bits short resolution=2834; //resolution du bitmap picture = fopen(argv[1],"wb"); //ouverture du fichier en ecriture //ecriture de l'entete fwrite(&title[0],sizeof(char),1,picture); fwrite(&title[1],sizeof(char),1,picture); for(int i=0;i<8;i++) fwrite(&title[2],sizeof(char),1,picture); fwrite(&title[3],sizeof(char),1,picture);for(int i=0;i<3;i++) fwrite(&title[2],sizeof(char),1,picture); fwrite(&title[4],sizeof(char),1,picture);for(int i=0;i<3;i++) fwrite(&title[2],sizeof(char),1,picture); printf("Larg ? "); scanf("%i",&larg); fwrite(&larg,sizeof(long),1,picture); printf("Haut ? "); scanf("%i",&haut); fwrite(&haut,sizeof(long),1,picture); fwrite(&title[5],sizeof(char),1,picture); fwrite(&title[2],sizeof(char),1,picture); fwrite(&title[6],sizeof(char),1,picture); fwrite(&title[2],sizeof(char),1,picture); for(int i=0;i<8;i++) fwrite(&title[2],sizeof(char),1,picture); fwrite(&resolution,sizeof(short),1,picture); fwrite(&title[2],sizeof(char),1,picture); fwrite(&title[2],sizeof(char),1,picture); fwrite(&resolution,sizeof(short),1,picture); fwrite(&title[2],sizeof(char),1,picture); fwrite(&title[2],sizeof(char),1,picture); for(int i=0;i<8;i++) fwrite(&title[2],sizeof(char),1,picture); ///////////////////////////////////////////////////////////////////////////////// nb0=larg%4; // permet de connaitre le nombre de zeros à mettre en fin de ligne du bitmap. float cx,cy; //coordonnées du plan complexe float largeur; //largeur du plan complexe printf("cx ? "); scanf("%f",&cx); printf("cy ? "); scanf("%f",&cy); printf("largeur complexe ? "); scanf("%f",&largeur); short nx=larg,ny=haut; float xmin=cx-largeur/2.0; //calculs des bornes du plan float ymax=cy+largeur/2.0*ny/nx; //calculs des bornes du plan float pas=float(largeur/nx); //calculs du pas d'incrementation float a,b,x,y,x1; //variables du problemes short n; char color[3]; //Tableau des couleurs ( 24bits -> 3 couleurs RVB [0->255]) short iter; printf("Iterations ? "); //Nb de fois que la suite doit convergé scanf("%i",&iter); for(int j=0;j<ny;j++) { b=ymax-j*pas; for(int i=0;i<nx;i++) { a=i*pas+xmin; x=0;y=0;n=0; do { x1=x*x-y*y+a; y=2*x*y+b; x=x1; n=n+1; }while(((x*x+y*y)<4) && (n<iter)); color[0]=255-255/(sqrt(sqrt(n))+1); //joli codage des couleurs color[1]=pow(n,0.85); //joli codage des couleurs color[2]=255/(sqrt(n)+1); //joli codage des couleurs if(n>(iter-1)) {color[0]=0;color[1]=0;color[2]=0;} fwrite(&color[0],sizeof(char),1,picture); fwrite(&color[1],sizeof(char),1,picture); //ecriture dans le bitmap fwrite(&color[2],sizeof(char),1,picture); } for(int j=0;j<nb0;j++) fwrite(&title[2],sizeof(char),1,picture); //zeros de fin de ligne } return 0; }
26 oct. 2005 à 13:06
merci
++
ad
7 mai 2004 à 22:01
8 févr. 2004 à 15:40
6 févr. 2004 à 20:11
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.