Tp1struct II B2.c : Différence entre versions
(Page créée avec « retour à la page précédente #include <stdio.h> #include <math.h> #include "SVGlib.h" #define N 10 #define largeur 640 #define hauteur 480<br> typedef ... ») |
m |
||
Ligne 1 : | Ligne 1 : | ||
− | + | {{RetourVers/TpII}} | |
#include <stdio.h> | #include <stdio.h> | ||
Ligne 75 : | Ligne 75 : | ||
} | } | ||
− | + | {{RetourVers/TpII}} |
Version du 10 décembre 2012 à 18:31
retour vers la page des Tps II
#include <stdio.h> #include <math.h> #include "SVGlib.h" #define N 10 #define largeur 640 #define hauteur 480
typedef struct { float min; float max; } bornes;
typedef struct { float X[N]; float Y[N]; bornes Xbornes; bornes Ybornes; } fct;
bornes extremes(fct f); fct echantillonne(float Xmin,float Xmax); void tracerFenetre(int espace,fct f);
int main() { fct f; f=echantillonne(0,4); tracerFenetre(20,f); return 0; }
bornes extremes(fct f) { int i; bornes M; //recherche des extremes M.min=f.Y[0]; M.max=f.Y[0]; for (i=1;i<N;i++) { if (M.min>f.Y[i]) M.min=f.Y[i]; if (M.max<f.Y[i]) M.max=f.Y[i]; } return M; }
fct echantillonne(float Xmin,float Xmax) { int i; fct f; f.Xbornes.min=Xmin; f.Xbornes.max=Xmax; // Tableau de valeurs for (i=0;i<N;i++) { f.X[i]=Xmin + i*(Xmax-Xmin)/(N-1); f.Y[i]=sin(f.X[i]); } f.Ybornes=extremes(f); return f; }
void tracerFenetre(int espace,fct f) { //Préparation de l'image SVGopen(largeur,hauteur); SVGrectanglePlein(0, 0, largeur, hauteur,0x303030,0x303030); SVGrectanglePlein(espace, espace, largeur-2*espace, hauteur-2*espace,0x000000,0xFFFFFF); int cX[N],cY[N],i; // Coordonnees dans l'image for (i=0;i<N;i++) { cX[i] = (largeur-2*espace) / (f.Xbornes.max-f.Xbornes.min) * (f.X[i]-f.Xbornes.min) + espace; cY[i] = (hauteur-2*espace)*(1 - (f.Y[i]-f.Ybornes.min)/(f.Ybornes.max-f.Ybornes.min)) + espace; } //tracé de la fonction for (i=1;i<N;i++) SVGline(cX[i-1],cY[i-1],cX[i],cY[i],0xFF0000); SVGClose(); }