assez pour ce soir

This commit is contained in:
tTh 2023-03-21 00:16:54 +01:00
parent aa4f0664cb
commit 0db76fef58
6 changed files with 108 additions and 32 deletions

View File

@ -19,6 +19,7 @@ Dans un premier temps, je vais les lister sommairement, et
ensuite j'aurais une idée sur lesquels seront les plus funs
à explorer.
Dartmouth Time Sharing System
% -------------------------------------------
\section{Bywater} \index{bywater}

View File

@ -7,6 +7,10 @@ guerre mondiale, en 1954, par
John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM},
\end{quote}
Pourquoi j'ai redécouvert un langage de ma jeunesse, et pourquoi
vous devriez vous aussi y jeter un regard attentif. Il y a plein
de bonnes choses, la septième va vous tenir compagnie.
% ========================================
\section{FORTRAN77}
@ -56,7 +60,8 @@ $
%
\section{Args \& Env}
Un fort beau programme, mais il est un peu fermé au monde extérieur.
Un fort beau programme que ce \textsc{helloworld}, mais il est un peu
fermé au monde extérieur.
Quand on lance un programme, il peut recevoir des instructions
par (mais pas que) deux canaux : les arguments de la ligne de commande
et les variables d'environnement.
@ -144,10 +149,15 @@ Il semble qu'il y ait deux concepts orthogonaux :
XXX\index{XXX}
Pour faire simple, on accède à chaque unité de donnée l'une après l'autre,
comme quand on déroule une bande 6250bpi.
\subsection{Indexé} \index{index}
XXX\index{XXX}
C'est pas pareil.
% --------------------------------------------------------
\section{Modules}
@ -221,7 +231,7 @@ mais ce ne sont probablement pas les seules.
La bibliothèque \textbf{Plplot} semble être un bon choix pour commencer,
mais il existe bien d'autres options.
Par exemple \textbf{g2} (page \pageref{g2}) semble être utilisable
Par exemple \textbf{g2} (vue en page \pageref{g2}) semble être utilisable
avec les vieux F77, et possiblement avec un Fortran moderne, il faut juste
un peu de \textsc{rtfm}.
@ -248,18 +258,30 @@ 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, PNG, SVG, et bien
d'autres dont certains, pour moi, assez ésotériques.
D'autre part, avec cette méthode, il est impossible de
D'autre part, avec cette méthode, il semble impossible de
préciser la taille de l'image.
Mais la démonstration est faite.
Laissons cette question en suspens, et commençons à dessiner.
Il faut quand même regarder de plus près la subroutine
\texttt{plenv()} (\textsl{Set up standard window and draw box})
qui initialise simplement un contexte graphique 2D somme toute
assez classique. Elle prend six paramètres. Les quatre premiers
sont les coordonnées flottantes de deux coins du papier,
le cinquième controle l'échelle des axes, et le dernier
controle le tracé des boites autour du graphique.
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.
Nous avons les bases, commençons donc à dessiner.
Ensuite nous allons choisir une couleur pour l'encre (qui est d'un
Premièrement, nous allons chosir de démarrer automatiquement
dans une fenètre X11,
en gardant le reste de la configuration avec ses valeurs par défaut.
Pour cela, il suffit de rajouter \texttt{call plsdev('xwin')} juste avant
l'appel à \texttt{plinit}, il vous faudra utiliser la touche
\textsl{<enter>} pour sortir\footnote{Une de mes prochaines tâche sera
de regarder comment quitter avec le '\textbf{q}' canonique}.
Ensuite, pour mettre en évidence notre art,
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, .
@ -273,27 +295,35 @@ 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~:
stockées dans deux tableaux parallèles que nous allons
immédiatement garnir de données pertinentes~:
\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)
y(i) = k * cos(real(i)/5.0)
k = k * 1.006021
enddo
\end{verbatim}
Wesh gro !
Une fois en possession de ces données conceptuelles, que l'on peut
aisément voire comme un cheminement, nous allons demander
au crayon de se promener sur notre feuille virtuelle en suivant
ce chemin~:
\begin{verbatim}
call plcol0 (12)
call plline (x, y)
\end{verbatim}
Au passage, vous pouvez remarquer la magie du Fortran moderne~:
il n'est plus nécessaire de signifier la dimension des tableaux
lors de l'appel de la procédure.
% --------------------------------------------------------

View File

@ -170,7 +170,6 @@ nous aurons toujours la même séquence en sortie.
\subsection{Trucs à voir}
\begin{verbatim}
#declare VIRGINIA =
transform {
matrix < 1, 1, 0,
@ -184,6 +183,12 @@ transform {VIRGINIA}
}
\end{verbatim}
% ================================================
\section{Avec Fortran}
plplot
% ------------------------------------------------

View File

@ -107,6 +107,12 @@ préciser le coef de qualité ( qscale : 1 = le mieux / 3 = correcte )
https://engineering.giphy.com/how-to-make-gifs-with-ffmpeg/ \index{gif89a}
\begin{verbatim}
ffmpeg -ss 0:5:59.600 -to 0:6:11.150 -i Downloads/foo.mp4 tmp/tragic.gif
\end{verbatim}
% -----------------------------------------------------------------
\subsection{Encoder un cloître}
Là, nous sommes dans du \textsl{serious bizness}, puisque cette vidéo

View File

@ -2,6 +2,9 @@ program dessiner
use plplot
implicit none
integer :: i
real :: a, b, c, d
character(len=80) :: version
call plgver(version)
write (*,'(a,a)') 'plplot version: ', trim(version)
@ -11,31 +14,53 @@ program dessiner
call plenv(-2.2, 2.2, -2.2, 2.2, 0, 1)
call dessin_1 ()
a = 0
b = 0
c = 0
d = 0
do i=1, 100
a = a + 0.01
b = b + 0.02
call dessin_1 (a, b, 12)
c = c + 0.03
d = d + 0.04
call dessin_1 (c, d, 13)
enddo
call plend
contains ! -----------------------------
subroutine dessin_1 ()
contains ! -----------------------------
!------------------------------------------------------
subroutine dessin_1 (sha, shb, color)
real, intent(in) :: sha, shb
integer, intent(in) :: color
integer, parameter :: lg = 500
integer, parameter :: lg = 2000
real :: x(lg), y(lg)
real :: k
real :: k, amp
integer :: i
k = 0.1
! print *, 'dessin 1'
amp = 2.0
do i = 1, lg
x(i) = k * sin(real(i)/3.0)
y(i) = k * cos(real(i)/3.0)
k = k * 1.0060
k = real(i)/real(lg) * 6.2832 * 4.0
x(i) = amp * sin((k+sha)*5)
y(i) = amp * cos((k+shb)*3)
enddo
print *, i, k, x(i), y(i)
! print *, k, x(i), y(i)
call plcol0 (15) ! pure white
call pllab ("Fuzzfactor", "Yoyodines", "Some nice plots from tTh")
call plcol0 (12)
call plcol0 (color)
call plline (x, y)
end subroutine
!------------------------------------------------------
subroutine dessin_2 ()
print *, 'dessin 2'
end subroutine
!------------------------------------------------------
end program

View File

@ -2,7 +2,16 @@ program plplotting
use plplot
implicit none
! Initializing the plotting package with a lot of
! default (and pertinent) values.
call plinit ()
call plenv(-2.1, 2.1, -2.1, 2.1, 0, 0)
call plend
! Sets up plotter environment for simple graphs
call plenv (-2.1, 2.1, -2.1, 2.1, 0, 0)
! Ends a plotting session, tidies up all the output
! files,switches interactive devices back into text
! mode and frees up any memory that was allocated.
call plend ()
end program