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
|
||||
à explorer.
|
||||
|
||||
Dartmouth Time Sharing System
|
||||
|
||||
% -------------------------------------------
|
||||
\section{Bywater} \index{bywater}
|
||||
|
@ -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.
|
||||
|
||||
% --------------------------------------------------------
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
% ------------------------------------------------
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user