original in en Baybora Baran and Seckin Gokaltun
en to fr Paul Delannoy
Nous sommes deux assistants de recherche � l'Institut d'Informatique de l'universit�d'ITU. Nous r�alisons des applications d'ing�nierie et nous utilisons Linux pour cela... La page personnelle de Seckin se trouve �� www.be.itu.edu.tr/~seckin
La biblioth�que de programmes graphiques PGPLOT est un outil logiciel graphique utilisable en Fortran ou en C, ind�pendant des p�riph�riques, qui permet de r�aliser des graphes scientifiques simples. Il est con�u pour permettre la cr�ation de graphiques de qualit� et publiables avec un minimum d'efforts. Dans la plupart des cas le programme peut �tre ind�pendant du p�riph�rique et ses sorties sont dirig�es vers le p�riph�rique appropri� lors de son ex�cution.
La biblioth�que PGPLOT se compose de deux grandes parties : l'une concerne ce qui est ind�pendant du p�riph�rique, l'autre concerne ce qui est d�pendant du p�riph�rique et propose un ensemble de pilotes, sous-programmes effectuant les sorties sur diff�rents terminaux, ��crans d'affichage, imprimantes � aiguilles ou � jet d'encre, imprimantes laser, et traceurs de courbes. Les format de fichiers les plus r�pandus sont support�s, y compris PostScript et GIF. PGPLOT elle-m�me est �crite en Fortran-77 standard.
Les routines PGPLOT peuvent ��tre invoqu�es directement dans un programme Fortran-77 ou Fortran-90. Une biblioth�que d'interface en C (cpgplot) et un fichier d'en-t�te (cpgplot.h) sont fournis afin d'assurer les transferts lors d'appels depuis un programme en C ou C++; cette biblioth�que effectue les conversions n�cessaires entre C et Fortran. PGPLOT a �t�test� sous UNIX (plusieurs vari�t�s, dont Linux, SunOS, Solaris, HPUX, AIX, et Irix) et OpenVMS.
PGPLOT n'est pas dans le domaine public. Pourtant il est disponible librement pour des usages non-commerciaux. Le code source et la documentation, ainsi qu'un petit nombre de routines sp�cifiques �� certains syst�mes, sont la propri�t� du California Institute of Technology (CalTech). Pour disposer du fichier et des instructions d'installation cliquez ici.
Ci-dessous quelques exemples d'application de PGPLOT afin de montrer ses capacit�s.
/usr/local/src/pgplot
(r�pertoire de distribution)
/usr/local/pgplot
(r�pertoire cible)
cd pub/pgplot
binary
hash
get pgplot5.2.tar.gz
tar
.
ftp://ftp.astro.caltech.edu/pub/pgplot/pgplot5.2.tar.gz
.
gunzip
et tar
pour d�compresser
l'archive et extraire son contenu. Cela va cr�er le r�pertoire
pgplot (et ses sous-r�pertoires) dans le r�pertoire courant.
Assurez-vous donc que le r�pertoire courant est bien celui o� vous
voulez cr�er l'arborescence de distribution de PGPLOT.
cd /usr/local/src
gunzip -c pgplot5.2.tar.gz | tar xvof -
/usr/local/src/pgplot
et
ses sous-r�pertoires.
mkdir /usr/local/pgplot
N'essayez pas de cr�er la biblioth�que PGPLOT dans le r�pertoire de distribution.drivers.list
du r�pertoire de distribution
vers le r�pertoire cible, puis utilisez un �diteur de texte pour choisir les
pilotes.
Chaque pilote de p�riph�rique disponible figure dans une ligne du fichier :
l'abscence de point d'exclamation (!) au d�but de la ligne active le pilote,
par contre sa pr�sence le d�sactive. Plusieurs d'entre eux sont sp�cifiques
� un syst�me d'exploitation (voir les notes dans drivers.list
),
aussi n'activez que les p�riph�riques que vous utiliserez vraiment.
PGPLOT pourra �tre reconfigur� plus tard en reprenant l'installation � cette
�tape.
Vous devrez souvent inclure : le p�riph�rique null (/NULL), des imprimantes PostScript
(/PS, /VPS, /CPS, et /VCPS), des terminaux Tektronix (/TEK, /XTERM, et d'autres variantes),
et, si le syst�me cible dispose du X Window System, les pilotes X Window (/XWINDOW,
/XSERVE). Vous pouvez aussi inclure les pilotes pour les fichiers GIF (/GIF, /VGIF)
ou d'autres imprimantes.
cd /usr/local/pgplot cp /usr/local/src/pgplot/drivers.list . vi drivers.list (ou votre �diteur favori)
makemake
, pour g�n�rer un fichier makefile UNIX standard
pour votre syst�me, vos compilateurs, et les p�riph�riques
PGPLOT choisis. L'information sur le syst�me et le compilateur est
fournie par un fichier de configuration.
Des fichiers de configuration sont disponibles pour les syst�mes qui suivent.
Si le votre n'est pas dans la liste, ou si vous rencontrez des probl�mes
pour cr�er le makefile, vous trouverez ci-dessous la fa�on de cr�er
votre propre fichier de configuration. f77
appelle le compilateur GNU g77, vous ne pouvez
pas utiliser le fichier de configuration d'un compilateur SPARC f77, par
exemple.
Vous aurez � cr�er un fichier de configuration particulier.
Dans le tableau suivant, Arg#2 est le code correspondant au syst�me
d'exploitation, et Arg#3 est le code correspondant aux
compilateurs Fortran et C. Vous obtiendrez des informations suppl�mentaires
sur les syst�mes support�s en lisant le fichier
pgplot/sys_*/aaaread.me
, o� * d�signe une des valeurs
possibles de Arg#2.
Arg#2 Arg#3 ------ ------ aix xlf_cc alliant fortran_cc bsd g77_gcc convex fc_cc cray cf77_cc epix2 f77_cc (Control Data EP/IX 2.x) freebsd f77_cc fujitsu uxpm_frt_cc fujitsu uxpv_frt_cc hp fort77_c89 hp fort77_gcc irix f77_cc linux absoft_gcc linux f77_gcc linux g77_elf linux g77_gcc next af77_cc next f2c_cc next g77_cc next gf77_cc osf1 f77_cc osf1 f77_cc_shared sol2 f77_cc (Solaris 2.x, SunOs 5.x) sol2 f77_gcc sol2 f90_cc sol2 g77_gcc sun4 f77_acc (SunOS 4.x) sun4 f77_cc sun4 f77_gcc ultrix f77_ccSi votre syst�me est dans la liste, faites comme suit : faites du r�pertoire cible votre r�pertoire courant par d�faut, comme ceci,
cd /usr/local/pgplotEx�cutez le script
makemake
depuis le r�pertoire de distribution :
/usr/local/src/pgplot/makemake /usr/local/src/pgplot linuxLe premier argument donn� �
makemake
est le nom du r�pertoire
de distribution. Notez que lorsque vous lancez makemake
,
le r�pertoire courant par d�faut doit �tre le r�pertoire cible, c-�-d. le r�pertoire
dans lequel vous voulez mettre les biblioth�ques compil�es. drivers.list
).
Reprenez � l'�tape 4!
Exemple
baybora@bilgi>../pgplot/makemake ../pgplot linux g77_gcc
For additional information, read file ../pgplot/sys_linux/aaaread.me
Reading configuration file: ../pgplot/sys_linux/g77_gcc.conf
Selecting uncommented drivers from ./drivers.list
Found drivers NUDRIV PSDRIV XWDRIV
Creating make file: makefile
Determining object file dependencies.
makemake
g�n�re un fichier makefile
qui sera utile plus tard, un fichier Fortran grexec.f
charg� des appels aux pilotes s�lectionn�s, et un fichier texte rgb.txt
qui contient les codes couleur n�cessaires � la routine PGSCRN.
(Si un tel fichier rgb.txt
existait auparavant, avec vos
propres d�finitions de couleurs, makemake
ne le modifierait
pas.)
Il copie aussi deux fichiers en-t�te en Fortran n�cessaires � la compilation.
Ainsi, � ce stade, vous devriez au moins avoir les fichiers :
drivers.list
grexec.f
grpckg1.inc
makefile
pgplot.inc
rgb.txt
makemake
d�clare avoir trouv� est bien identique � celle
indiqu�e dans drivers.list
.
Si votre UNIX n'est pas dans la liste des syst�mes support�s ci-dessus, cr�ez
votre propre fichier de configuration dans le r�pertoire cible, en le nommant
local.conf
. Le mieux est de copier un des fichiers fournis (dans
pgplot/sys_*/*.conf
), et de l'�diter en suivant les commentaires
pr�sents dans ce fichier. La proc�dure makemake
utilisera
local.conf
s'il existe dans le r�pertoire courant, et si vous
ne sp�cifiez pas de valeur pour Arg#3. Mais Arg#2 est toujours n�cessaire (OS).
make
va compiler le code de la biblioth�que
PGPLOT en s'appuyant sur les donn�es du fichier makefile
:
make
Par d�faut,make
g�n�re : une biblioth�que module-objet, libpgplot.a
;
une biblioth�que partag�e (si le syst�me le supporte), le fichier binaire de polices
PGPLOT grfont.dat
, les programmes de d�monstration pgdemo*
,
et un fichier de documentation pgplot.doc
.
De plus, si les pilotes /XWINDOW et/ou /XSERVE ont �t� activ�s � l'�tape 4,
le programme pgxwin_server
sera cr��, et si le pilote /XDISP a �t�
activ�, le programme pgdisp
sera cr��.
Si cette �tape se termine correctement, vous pouvez taper
make clean
pour effacer les fichiers interm�diaires devenus inutiles. Vous auriez alors au moins dans votre r�pertoire courant :drivers.list
grexec.f
grfont.dat (fichier binaire de polices)*
libpgplot.a (biblioth�que PGPLOT)*
libpgplot.so (biblioth�que partag�e, sous r�serve)*
makefile
pgdemo1 ... pgdemo16 (programmes de d�monstration)
pgdisp (n�cessaire au pilote /XDISP)*
pgplot.doc (fichier ASCII de documentation)
pgxwin_server (n�cessaire au pilote /XWINDOW)*
rgb.txt (base de donn�es des noms de couleurs)*
pgmdemo (programme de d�mo ex�cutable)
libXmPgplot.a (biblioth�que objet n�cessaire aux applications PGPLOT/Motif)*
XmPgplot.h (fichier en-t�te n�cessaire aux applications PGPLOT/Motif)*
libtkpgplot.a (biblioth�que objet n�cessaire aux applications PGPLOT/Tk)*
pgtkdemo (programme de d�mo ex�cutable)
pgtkdemo.tcl (script n�cessaire au programme de d�mo)
tkpgplot.h (fichier en-t�te n�cessaire aux applications PGPLOT/Tk)*
PGPLOT_DIR
est correctement d�finie. C'est le nom du r�pertoire dans lequel PGPLOT va chercher
les fichiers grfont.dat
et rgb.txt
(� moins que les
variables PGPLOT_FONT
et PGPLOT_RGB
n'aient re�u des
valeurs destin�es�� modifier ce comportement), et, si n�cessaire, le programme
X Window server pgxwin_server
:
UNIX csh or tcsh: setenv PGPLOT_DIR /usr/local/pgplot/
UNIX sh or bash: PGPLOT_DIR="/usr/local/pgplot/"; export PGPLOT_DIR
PGPLOT_DEV
, par exemple :
UNIX csh or tcsh: setenv PGPLOT_DEV /xwindow
Si vous utilisez une biblioth�que partag�e sous UNIX (par ex. sous Solaris 2.x), vous devrez sans doute aussi inclure le r�pertoire PGPLOT dans votre chemin de recherche, d�fini par la variable d'environnementLD_LIBRARY_PATH
.
Pour lancer un programme, tapez son nom (avec le r�pertoire si le
r�pertoire courant n'est pas dans votre chemin de recherche) :
./pgdemo1
Tous ces programmes de d�mo demandent un p�riph�rique et son type. Tapez un point d'interrogation?
pour avoir la liste
des pilotes disponibles et v�rifier ainsi que PGPLOT est bien
configur�.
Points � v�rifier : le programme PGPLOT lit correctement les polices
et affiche correctement les exposants, les indices et les caract�res
sp�ciaux (pgdemo2) ; le programme PGPLOT lit correctement les d�finitions
de couleurs (pgdemo10) ; sur les p�riph�riques interactifs, le curseur
est bien g�r� (pgdemo5, pgdemo6).
PROGRAM EX1 INTEGER PGOPEN, I REAL XS(9), YS(9), XR(101), YR(101) C Calcule les coordonn�es des points � tracer. DO 10 I=1,101 XR(I) = 0.1*(I-1) YR(I) = XR(I)**2*EXP(-XR(I)) 10 CONTINUE DO 20 I=1,9 XS(I) = I YS(I) = XS(I)**2*EXP(-XS(I)) 20 CONTINUE C Ouvre le p�riph�rique graphique. IF (PGOPEN('?') .LT. 1) STOP C D�finit l'�tendue du graphe (0 < x < 10, 0 < y < 0.65), C et trace les axes. CALL PGENV(0., 10., 0., 0.65, 0, 0) C Etiquette les axes (notez l'usage de \u et \d pour les exposants). CALL PGLAB('x', 'y', 'PGPLOT Graph: y = x\u2\dexp(-x)') C Trace le graphe. CALL PGLINE(101, XR, YR) C Place des symboles aux points choisis. CALL PGPT(9, XS, YS, 18) C Ferme le p�riph�rique graphique. CALL PGCLOS END
Ceci affichera le graphique ci-dessous :
Pour que ce code s'ex�cute correctement, vous devrez lier la biblioth�que PGPLOT et les biblioth�ques X11 dans votre code source. Le script suivant fait cette liaison :g77 your_code_name.f -L/X11directory/ -lX11 -L/PGPLOTdirectory/ -lpgplot
Lors de l'ex�cution les fichiers suivants doivent �tre dans le r�pertoire courant :
grfont.dat rgb.txt pgwin serverIl suffit de les copier du r�pertoire pgplot vers le r�pertoire dans lequel vous ex�cutez votre code.
Notre but est de saisir les coordonn�es de 3 points indiqu�s par des clics de souris, puis de laisser le code Fortran tracer le cercle qui passe par ces 3 points. Ce probl�me �tait une consigne donn�e par le Dr.Serdar Celebi (mscelebi(at)itu.edu.tr) lors du cours de "G�om�trie Computationnelle" que nous suivions.
Les routines suivantes d�finissent l'�tendue et le fond de la zone dans laquelle vont figurer les trac�s suivants. Leur usage est d�taill� dans le manuel PGPLOT. (voir le lien vers la page de PGPLOT � la fin)
..
...
call PGSCR(0,1.0,1.0,1.0) !fixe les codes couleur
call PGENV(-50.0,50.0,-50.0,50.0,1,1) !d�finit fen�tre et �tendue, dessine
le cadre et son �tiquette
call PGSCI(1) !fixe la couleur
call PGSFS(2) !fixe le style 'remplissage'
...
..
La routine utilis�e, PGPT1, place un pointeur au point d�sign� par la souris.
.. ... WRITE (*,*) 'Mode curseur :', MODE GOTO 10 END IF CALL PGPT1(X, Y, 3) !trace un marqueur ic=ic+1 xp(i)=x yp(i)=y
Apr�s avoir marqu� 3 points dans l'�cran, le code Fortran calcule le centre puis trace le cercle qui passe par les 3 points.
.. ... c-----trouve le rayon--------------- r=(xcenter-xp(1))**2+(ycenter-yp(1))**2 r=r**0.5 c-----trace le cercle------------------- call PGCIRC(xcenter,ycenter,r) !trace un cercle goto 1 ... ..
Nous tra�ons le cercle avec cette routine, "PGCIRC". Vous pouvez alors effacer le cercle pr�-dessin� puis donner trois autres points et effectuer le trac� dans la m�me zone. Le code complet figure dans les r�f�rences (cf. R�f. circle.f).
Nous voulons tracer une courbe d'approximation d'un nuage de points
marqu�s � la souris dans l'�cran, puis tracer sur cette courbe des
lignes droites en '�pines'.
Les �pines de porc-�pic sont des lignes que l'on utilise pour
d�tecter des points d'inflexion, des parties 'plates' de la courbe,
et des discontinuit�s dans sa courbure. C'est ce qui rend leur usage
important en "G�om�trie Computationnelle".
Nous avons d�velopp� un code pour calculer une courbe d'un degr�
donn� (entre 1 et 4) par la m�thode des moindres carr�s appliqu�e ��
un ensemble de points d�sign�s par l'utilisateur dans l'interface
graphique gr�ce � la souris. Il donne la possibilit� d'ajouter des
'�pines' (avec une fr�quence ajustable par l'utilisateur) sur la courbe
afin de visualiser sa courbure.
Sans entrer dans les d�tails de ce code (vous le trouverez � la fin
de l'article) voici les r�sultats graphiques obtenus.
D'abord nous marquons les points � la souris et le code stocke leurs coordonn�es dans un tableau. Puis il calcule la courbe du degr� demand� (entre 1 et 4) par l'utilisateur.
On trace alors les �pines sur la courbe. Leur nombre peut �tre donn� par l'utilisateur et le nouvel ensemble est trac� sur la m�me courbe.
La fr�quence des �pines peut �tre augment�e comme montr� ci-dessous. Le programme peut aussi tracer une nouvelle courbe sur le m�me ensemble de donn�es.