diff --git a/chap/Fortran.tex b/chap/Fortran.tex index 19a8f3c..2a5d549 100644 --- a/chap/Fortran.tex +++ b/chap/Fortran.tex @@ -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{} +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{} +Voilà, c'est tout pour le moment\dots % ======================================== diff --git a/code/fortran/.gitignore b/code/fortran/.gitignore new file mode 100644 index 0000000..be8f205 --- /dev/null +++ b/code/fortran/.gitignore @@ -0,0 +1,6 @@ + +plplotting +dessiner + +*.png + diff --git a/code/fortran/Makefile b/code/fortran/Makefile index cd10fef..792a807 100644 --- a/code/fortran/Makefile +++ b/code/fortran/Makefile @@ -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 $@ diff --git a/code/fortran/dessiner.f90 b/code/fortran/dessiner.f90 new file mode 100644 index 0000000..17262c1 --- /dev/null +++ b/code/fortran/dessiner.f90 @@ -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 diff --git a/tetatricks.tex b/tetatricks.tex index 5ffc895..3b8c6da 100644 --- a/tetatricks.tex +++ b/tetatricks.tex @@ -5,7 +5,7 @@ % Décembre, ça n'avance pas beaucoup... % -\usepackage[francais]{babel} +\usepackage[french]{babel} \usepackage[utf8]{inputenc} \usepackage{xspace} \usepackage{makeidx}