premier dessin avec plplot

This commit is contained in:
tTh 2023-03-07 20:49:36 +01:00
parent 04eeae6de9
commit aa4f0664cb
5 changed files with 102 additions and 9 deletions

View File

@ -243,19 +243,61 @@ ou un \textsc{HelloWorld}~:
\lstinputlisting{code/fortran/plplotting.f90}
Il ne se passe pas grand chose, sauf la proposition de choisir
le type de sortie.
Il ne se passe pas grand chose, sauf qu'on a une proposition de
choisir le type de sortie.
Dans la version que j'ai (XXX\index{XXX}), on a le choix entre
X-Window, PostScript mono ou couleur, Xfig, Null, UserMemory et SVG.
C'est intriguant de ne pas avoir au moins \textbf{un} format
pixmap\index{pixmap}.
X-Window, PostScript mono ou couleur, Xfig, PNG, SVG, et bien
d'autres dont certains, pour moi, assez ésotériques.
D'autre part, avec cette méthode, il est impossible de
préciser la taille de l'image.
Laissons cette question en suspens, et commençons à dessiner.
D'accord, mais dessiner quoi ?
Première étape, démarrer automatiquement dans une fenètre X11,
en gardant tous les autres paramètres à leur valeur par défaut.
Il suffit de rajouter \texttt{call plsdev('xwin')} juste avant
l'appel à \texttt{plinit}, et d'utiliser la touche \textsl{<enter>}
pour sortir.
Ensuite nous allons choisir une couleur pour l'encre (qui est d'un
rouge du meilleur effet par défaut en mode "xwin"),
puis écrire quelques légendes canoniques, donc inutiles, .
\begin{verbatim}
call plcol0 (15) ! pure white
call pllab ("Fuzzfactor", "Yoyodines", "Some nice plots")
\end{verbatim}
Il est maintenant temps de poser un premier trait de crayon numérique
sur notre feuille blanche numérique\footnote{Actuellement noire, mais
nous trouverons bien comment changer ça}.
La forme de ce tracé sera donnée par une suite de coordonnées
flottantes \textsl{x/y}
stockées dans deux tableaux parallèles~:
\begin{verbatim}
integer, parameter :: lg = 500
real :: x(lg), y(lg)
\end{verbatim}
Tableaux que nous allons immédiatement garnir de données pertinentes~:
\begin{verbatim}
real :: k
integer :: i
k = 0.1
do i = 1, lg
x(i) = k * sin(real(i)/3.0)
y(i) = k * cos(real(i)/3.0)
k = k * 1.006021
enddo
\end{verbatim}
Wesh gro !
% --------------------------------------------------------
\section{Questions}
\section{Questions en attente}
\index{XXX}
@ -265,7 +307,7 @@ D'accord, mais dessiner quoi ?
\item Est-il possible de causer à \texttt{libsndfile} ?
\item Comment caler une chaine à gauche avec un \textsc{format} ?
\item Is there a \texttt{-fortran} option for making comments with
\texttt{figlet}\index{figlet} ?
\texttt{boxes} + \texttt{figlet}\index{figlet} ?
\end{itemize}
% --------------------------------------------------------
@ -273,6 +315,7 @@ D'accord, mais dessiner quoi ?
\textsl{<Pas de réponse>}
Voilà, c'est tout pour le moment\dots
% ========================================

6
code/fortran/.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
plplotting
dessiner
*.png

View File

@ -3,3 +3,6 @@ INCS = -I/usr/include/plplot -I/usr/lib/x86_64-linux-gnu/fortran/modules/plplot
plplotting: plplotting.f90 Makefile
gfortran -g $< $(INCS) -lplplotfortran -o $@
dessiner: dessiner.f90 Makefile
gfortran -g $< $(INCS) -lplplotfortran -o $@

41
code/fortran/dessiner.f90 Normal file
View File

@ -0,0 +1,41 @@
program dessiner
use plplot
implicit none
character(len=80) :: version
call plgver(version)
write (*,'(a,a)') 'plplot version: ', trim(version)
call plsdev('xwin')
call plinit ()
call plenv(-2.2, 2.2, -2.2, 2.2, 0, 1)
call dessin_1 ()
call plend
contains ! -----------------------------
subroutine dessin_1 ()
integer, parameter :: lg = 500
real :: x(lg), y(lg)
real :: k
integer :: i
k = 0.1
do i = 1, lg
x(i) = k * sin(real(i)/3.0)
y(i) = k * cos(real(i)/3.0)
k = k * 1.0060
enddo
print *, i, k, x(i), y(i)
call plcol0 (15) ! pure white
call pllab ("Fuzzfactor", "Yoyodines", "Some nice plots from tTh")
call plcol0 (12)
call plline (x, y)
end subroutine
end program

View File

@ -5,7 +5,7 @@
% Décembre, ça n'avance pas beaucoup...
%
\usepackage[francais]{babel}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage{xspace}
\usepackage{makeidx}