Tp1struct II B2.c : Différence entre versions
m |
m |
||
Ligne 7 : | Ligne 7 : | ||
#define N 10 | #define N 10 | ||
#define largeur 640 | #define largeur 640 | ||
− | #define hauteur 480 | + | #define hauteur 480 |
+ | |||
typedef struct | typedef struct | ||
{ | { | ||
Ligne 29 : | Ligne 30 : | ||
tracerFenetre(20,f); | tracerFenetre(20,f); | ||
return 0; | return 0; | ||
− | } | + | } |
+ | |||
bornes extremes(fct f) | bornes extremes(fct f) | ||
{ | { | ||
Ligne 42 : | Ligne 44 : | ||
} | } | ||
return M; | return M; | ||
− | } | + | } |
+ | |||
fct echantillonne(float Xmin,float Xmax) | fct echantillonne(float Xmin,float Xmax) | ||
{ | { | ||
Ligne 57 : | Ligne 60 : | ||
f.Ybornes=extremes(f); | f.Ybornes=extremes(f); | ||
return f; | return f; | ||
− | } | + | } |
+ | |||
void tracerFenetre(int espace,fct f) | void tracerFenetre(int espace,fct f) | ||
{ | { |
Version du 15 décembre 2012 à 19:16
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;<br>
typedef struct
{
float X[N];
float Y[N];
bornes Xbornes;
bornes Ybornes;
} fct;<br>
bornes extremes(fct f);
fct echantillonne(float Xmin,float Xmax);
void tracerFenetre(int espace,fct f);<br>
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();
}