assez pour ce soir
This commit is contained in:
parent
aa4f0664cb
commit
0db76fef58
@ -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
|
ensuite j'aurais une idée sur lesquels seront les plus funs
|
||||||
à explorer.
|
à explorer.
|
||||||
|
|
||||||
|
Dartmouth Time Sharing System
|
||||||
|
|
||||||
% -------------------------------------------
|
% -------------------------------------------
|
||||||
\section{Bywater} \index{bywater}
|
\section{Bywater} \index{bywater}
|
||||||
|
@ -7,6 +7,10 @@ guerre mondiale, en 1954, par
|
|||||||
John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM},
|
John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM},
|
||||||
\end{quote}
|
\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}
|
\section{FORTRAN77}
|
||||||
@ -56,7 +60,8 @@ $
|
|||||||
%
|
%
|
||||||
\section{Args \& Env}
|
\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
|
Quand on lance un programme, il peut recevoir des instructions
|
||||||
par (mais pas que) deux canaux : les arguments de la ligne de commande
|
par (mais pas que) deux canaux : les arguments de la ligne de commande
|
||||||
et les variables d'environnement.
|
et les variables d'environnement.
|
||||||
@ -144,10 +149,15 @@ Il semble qu'il y ait deux concepts orthogonaux :
|
|||||||
|
|
||||||
XXX\index{XXX}
|
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}
|
\subsection{Indexé} \index{index}
|
||||||
|
|
||||||
XXX\index{XXX}
|
XXX\index{XXX}
|
||||||
|
|
||||||
|
C'est pas pareil.
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\section{Modules}
|
\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,
|
La bibliothèque \textbf{Plplot} semble être un bon choix pour commencer,
|
||||||
mais il existe bien d'autres options.
|
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
|
avec les vieux F77, et possiblement avec un Fortran moderne, il faut juste
|
||||||
un peu de \textsc{rtfm}.
|
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
|
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
|
X-Window, PostScript mono ou couleur, Xfig, PNG, SVG, et bien
|
||||||
d'autres dont certains, pour moi, assez ésotériques.
|
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.
|
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,
|
Nous avons les bases, commençons donc à dessiner.
|
||||||
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
|
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"),
|
rouge du meilleur effet par défaut en mode "xwin"),
|
||||||
puis écrire quelques légendes canoniques, donc inutiles, .
|
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}.
|
nous trouverons bien comment changer ça}.
|
||||||
La forme de ce tracé sera donnée par une suite de coordonnées
|
La forme de ce tracé sera donnée par une suite de coordonnées
|
||||||
flottantes \textsl{x/y}
|
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}
|
\begin{verbatim}
|
||||||
integer, parameter :: lg = 500
|
integer, parameter :: lg = 500
|
||||||
real :: x(lg), y(lg)
|
real :: x(lg), y(lg)
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
Tableaux que nous allons immédiatement garnir de données pertinentes~:
|
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
real :: k
|
real :: k
|
||||||
integer :: i
|
integer :: i
|
||||||
k = 0.1
|
k = 0.1
|
||||||
do i = 1, lg
|
do i = 1, lg
|
||||||
x(i) = k * sin(real(i)/3.0)
|
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
|
k = k * 1.006021
|
||||||
enddo
|
enddo
|
||||||
\end{verbatim}
|
\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.
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
|
@ -170,7 +170,6 @@ nous aurons toujours la même séquence en sortie.
|
|||||||
\subsection{Trucs à voir}
|
\subsection{Trucs à voir}
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
|
|
||||||
#declare VIRGINIA =
|
#declare VIRGINIA =
|
||||||
transform {
|
transform {
|
||||||
matrix < 1, 1, 0,
|
matrix < 1, 1, 0,
|
||||||
@ -184,6 +183,12 @@ transform {VIRGINIA}
|
|||||||
}
|
}
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
% ================================================
|
||||||
|
|
||||||
|
\section{Avec Fortran}
|
||||||
|
|
||||||
|
plplot
|
||||||
|
|
||||||
|
|
||||||
% ------------------------------------------------
|
% ------------------------------------------------
|
||||||
|
|
||||||
|
@ -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}
|
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}
|
\subsection{Encoder un cloître}
|
||||||
|
|
||||||
Là, nous sommes dans du \textsl{serious bizness}, puisque cette vidéo
|
Là, nous sommes dans du \textsl{serious bizness}, puisque cette vidéo
|
||||||
|
@ -2,6 +2,9 @@ program dessiner
|
|||||||
use plplot
|
use plplot
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
|
integer :: i
|
||||||
|
real :: a, b, c, d
|
||||||
|
|
||||||
character(len=80) :: version
|
character(len=80) :: version
|
||||||
call plgver(version)
|
call plgver(version)
|
||||||
write (*,'(a,a)') 'plplot version: ', trim(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 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
|
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 :: x(lg), y(lg)
|
||||||
real :: k
|
real :: k, amp
|
||||||
integer :: i
|
integer :: i
|
||||||
|
|
||||||
k = 0.1
|
! print *, 'dessin 1'
|
||||||
|
amp = 2.0
|
||||||
do i = 1, lg
|
do i = 1, lg
|
||||||
x(i) = k * sin(real(i)/3.0)
|
k = real(i)/real(lg) * 6.2832 * 4.0
|
||||||
y(i) = k * cos(real(i)/3.0)
|
x(i) = amp * sin((k+sha)*5)
|
||||||
k = k * 1.0060
|
y(i) = amp * cos((k+shb)*3)
|
||||||
enddo
|
enddo
|
||||||
print *, i, k, x(i), y(i)
|
! print *, k, x(i), y(i)
|
||||||
|
|
||||||
call plcol0 (15) ! pure white
|
call plcol0 (15) ! pure white
|
||||||
call pllab ("Fuzzfactor", "Yoyodines", "Some nice plots from tTh")
|
call pllab ("Fuzzfactor", "Yoyodines", "Some nice plots from tTh")
|
||||||
call plcol0 (12)
|
call plcol0 (color)
|
||||||
call plline (x, y)
|
call plline (x, y)
|
||||||
|
|
||||||
end subroutine
|
end subroutine
|
||||||
|
!------------------------------------------------------
|
||||||
|
subroutine dessin_2 ()
|
||||||
|
|
||||||
|
print *, 'dessin 2'
|
||||||
|
|
||||||
|
end subroutine
|
||||||
|
!------------------------------------------------------
|
||||||
|
|
||||||
end program
|
end program
|
||||||
|
@ -2,7 +2,16 @@ program plplotting
|
|||||||
use plplot
|
use plplot
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
|
! Initializing the plotting package with a lot of
|
||||||
|
! default (and pertinent) values.
|
||||||
call plinit ()
|
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
|
end program
|
||||||
|
Loading…
Reference in New Issue
Block a user