
/*************************************************
* exemple_graphisme.c                            *
* Programme de démonstration pour tracer une     *
* courbe avec la "bibliothèque" graphisme.c      *
*                                                *
*  F.Marc 2007                                   *
*************************************************/

/*
A compiler par (compilation collective) :
	gcc exemple_graphisme.c -o exemple_graphisme -ltpinfo `allegro-config --cflags --libs` -Wall -lm

ou par (compilation separee) :
	gcc exemple_graphisme.c -c  `allegro-config --cflags` -Wall
	gcc exemple_graphisme.o -o exemple_graphisme -ltpinfo `allegro-config --libs` -lm

*/

#include <stdio.h>
#include <math.h>

#include <TPInfo/graphisme.h>
#include <TPInfo/echelles.h>

int main(void)
{

  int hauteur,largeur;
  double x,y,t;
  double xprec,yprec;
  int premier_point;
  int rouge,couleur;
  Repere mon_repere;
  Echelles mes_echelles;

  hauteur=400;
  largeur=1000;

  ouvrir_fenetre_graphique(largeur,hauteur);

	/* creation d'un Repere, c'est à dire un objet pour convertir
	   les coordonnées perso en coordonnées fenetre (pixels) */
	/* voir déclaration dans /usr/local/include/TPInfo/graphisme.h */
  mon_repere=creer_repere(-10.0,10.0,-1.5,1.5);


  /* 1ere courbe */
  /* creation du code couleur (toujours après ouverture de la fenetre) */
  rouge=makecol(255,50,0);

 for(x=mon_repere.xmin;x<mon_repere.xmax;x+=0.01)
  	{
	y=cos(x);
  	repere_tracer_point(&mon_repere,x,y,rouge);
	}


  /* 2eme courbe */

 for(x=mon_repere.xmin;x<mon_repere.xmax;x+=0.01)
  	{
	y=sin(x);
	/* calcul de la couleur en fonction de y */
	/* rouge : maxi (255) ; bleu : mini(0) ; vert : -1.0->mini   1.0->maxi */
	/* formule non protégée contre les débordements */
	couleur=makecol(255,(int)(127.0*(y+1.0)),0); 

  	repere_tracer_point(&mon_repere,x,y,couleur);
	}


  /* 3eme courbe (parametrique) tracee par segments*/
 
 premier_point=1; /*vrai*/
 for(t=0.0;t<=2*M_PI;t+=0.05)
  	{
	x=3*cos(t);
	y=sin(3*t);

	couleur=makecol(0,255,255); 

	if (!premier_point)
	  	repere_tracer_segment(&mon_repere, xprec,yprec, x,y, couleur);

	premier_point=0; /*faux*/
	xprec=x;
	yprec=y;
	}


  /* et si on mettait des echelles */
  mes_echelles=creer_echelles_defaut(&mon_repere);
  echelles_dessiner(&mes_echelles,&mon_repere);


  printf("Appuyez sur <entree> pour terminer le programme\n");
  scanf("%*c");


  fermer_fenetre_graphique();


  return 0;

}
END_OF_MAIN(); /* ceci est demandé par la bibliothèque Allegro */

