#include #include #include #include "pgm.h" #define NOMBRE_DE_NIVEAUX_DE_GRIS 255 #define COULEUR_DE_FOND NOMBRE_DE_NIVEAUX_DE_GRIS #define LARGEUR 800 #define DEMI_HAUTEUR 200 #define HAUTEUR (2*DEMI_HAUTEUR+1) const double pi = 3.1415926535; static void placer_pixel(int j, double y, double amplitude, int niveau_de_gris) { int i = HAUTEUR - ((y/amplitude)*DEMI_HAUTEUR + DEMI_HAUTEUR); if (i < 0 || i >= HAUTEUR) return; pgm_ecrire_pixel(i, j, niveau_de_gris); if (i < HAUTEUR-1) pgm_ecrire_pixel(i + 1, j, niveau_de_gris); if (i > 0) pgm_ecrire_pixel(i - 1, j, niveau_de_gris); } int main(void) { const double echelle = (3.0*pi)/LARGEUR; pgm_creer(LARGEUR, HAUTEUR); pgm_initialiser(COULEUR_DE_FOND); for (int j = 1; j <= LARGEUR; j++) { double x = (double)j*echelle; placer_pixel(j, 0.0, 1.0, 230); placer_pixel(j, sin(x+pi/2)*sin(2*x+pi/2), 1.0, 170); placer_pixel(j, sin(pi*x)/(pi*x), 1.0, 120); placer_pixel(j, cos(x), 1.0, 80); placer_pixel(j, sin(x), 1.0, 50); placer_pixel(j, exp(x), exp(LARGEUR*echelle), 30); placer_pixel(j, log(x), log(LARGEUR*echelle), 15); placer_pixel(j, floor(x), floor(LARGEUR*echelle), 0); } pgm_ecrire_image(stdout); return EXIT_SUCCESS; }