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} \lstinputlisting{code/fortran/plplotting.f90}
Il ne se passe pas grand chose, sauf la proposition de choisir Il ne se passe pas grand chose, sauf qu'on a une proposition de
le type de sortie. choisir le type de sortie.
Dans la version que j'ai (XXX\index{XXX}), on a le choix entre 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. X-Window, PostScript mono ou couleur, Xfig, PNG, SVG, et bien
C'est intriguant de ne pas avoir au moins \textbf{un} format d'autres dont certains, pour moi, assez ésotériques.
pixmap\index{pixmap}. 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. 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} \index{XXX}
@ -265,7 +307,7 @@ D'accord, mais dessiner quoi ?
\item Est-il possible de causer à \texttt{libsndfile} ? \item Est-il possible de causer à \texttt{libsndfile} ?
\item Comment caler une chaine à gauche avec un \textsc{format} ? \item Comment caler une chaine à gauche avec un \textsc{format} ?
\item Is there a \texttt{-fortran} option for making comments with \item Is there a \texttt{-fortran} option for making comments with
\texttt{figlet}\index{figlet} ? \texttt{boxes} + \texttt{figlet}\index{figlet} ?
\end{itemize} \end{itemize}
% -------------------------------------------------------- % --------------------------------------------------------
@ -273,6 +315,7 @@ D'accord, mais dessiner quoi ?
\textsl{<Pas de réponse>} \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 plplotting: plplotting.f90 Makefile
gfortran -g $< $(INCS) -lplplotfortran -o $@ 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... % Décembre, ça n'avance pas beaucoup...
% %
\usepackage[francais]{babel} \usepackage[french]{babel}
\usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc}
\usepackage{xspace} \usepackage{xspace}
\usepackage{makeidx} \usepackage{makeidx}