first gif89a with fortran & plplot
This commit is contained in:
parent
0db76fef58
commit
28c260ea5e
@ -13,6 +13,13 @@ de bonnes choses, la septième va vous tenir compagnie.
|
|||||||
|
|
||||||
% ========================================
|
% ========================================
|
||||||
|
|
||||||
|
%
|
||||||
|
% un petit historique ?
|
||||||
|
%
|
||||||
|
\section{On the big irons}
|
||||||
|
|
||||||
|
TODO\index{XXX}
|
||||||
|
|
||||||
\section{FORTRAN77}
|
\section{FORTRAN77}
|
||||||
|
|
||||||
Dernière version à exiger le format '80 colonnes' des cartes perforées,
|
Dernière version à exiger le format '80 colonnes' des cartes perforées,
|
||||||
@ -235,7 +242,7 @@ 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}.
|
||||||
|
|
||||||
Nous allons donc commencer par Plplot, pour envisager ensuite les alternatives.
|
Nous allons donc commencer par PlPlot, pour envisager ensuite les alternatives.
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
%
|
%
|
||||||
@ -276,10 +283,7 @@ Premièrement, nous allons chosir de démarrer automatiquement
|
|||||||
dans une fenètre X11,
|
dans une fenètre X11,
|
||||||
en gardant le reste de la configuration avec ses valeurs par défaut.
|
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
|
Pour cela, il suffit de rajouter \texttt{call plsdev('xwin')} juste avant
|
||||||
l'appel à \texttt{plinit}, il vous faudra utiliser la touche
|
l'appel à \texttt{plinit},
|
||||||
\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,
|
Ensuite, pour mettre en évidence notre art,
|
||||||
nous allons choisir une couleur pour l'encre (qui est d'un
|
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"),
|
||||||
@ -314,17 +318,26 @@ immédiatement garnir de données pertinentes~:
|
|||||||
Une fois en possession de ces données conceptuelles, que l'on peut
|
Une fois en possession de ces données conceptuelles, que l'on peut
|
||||||
aisément voire comme un cheminement, nous allons demander
|
aisément voire comme un cheminement, nous allons demander
|
||||||
au crayon de se promener sur notre feuille virtuelle en suivant
|
au crayon de se promener sur notre feuille virtuelle en suivant
|
||||||
ce chemin~:
|
ce chemin, et enfin de s'arreter de dessiner~:
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
call plcol0 (12)
|
call plcol0 (12)
|
||||||
call plline (x, y)
|
call plline (x, y)
|
||||||
|
call plend ()
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
Au passage, vous pouvez remarquer la magie du Fortran moderne~:
|
Au passage, vous pouvez remarquer la magie du Fortran moderne~:
|
||||||
il n'est plus nécessaire de signifier la dimension des tableaux
|
il n'est plus nécessaire de signifier la dimension des tableaux
|
||||||
lors de l'appel de la procédure.
|
lors de l'appel de la procédure.
|
||||||
|
|
||||||
|
Dans ce mode de fonctionnement interactif,
|
||||||
|
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}.
|
||||||
|
Nous verrons pas la suite comment écrire des fichiers 'image'
|
||||||
|
vectoriels ou bitmap en mode \textsl{batch}.
|
||||||
|
Enfin une ouverture vers les Gifs animées\index{gif89a}.
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\section{Questions en attente}
|
\section{Questions en attente}
|
||||||
|
4
code/fortran/.gitignore
vendored
4
code/fortran/.gitignore
vendored
@ -3,4 +3,6 @@ plplotting
|
|||||||
dessiner
|
dessiner
|
||||||
|
|
||||||
*.png
|
*.png
|
||||||
|
*.gif
|
||||||
|
WS/*.png
|
||||||
|
WS/*.eps
|
||||||
|
@ -6,3 +6,9 @@ plplotting: plplotting.f90 Makefile
|
|||||||
|
|
||||||
dessiner: dessiner.f90 Makefile
|
dessiner: dessiner.f90 Makefile
|
||||||
gfortran -g $< $(INCS) -lplplotfortran -o $@
|
gfortran -g $< $(INCS) -lplplotfortran -o $@
|
||||||
|
|
||||||
|
|
||||||
|
foo.gif: dessiner Makefile
|
||||||
|
rm -f WS/A????.png
|
||||||
|
./dessiner
|
||||||
|
convert -delay 10 -colors 31 WS/A????.png foo.gif
|
3
code/fortran/WS/README.md
Normal file
3
code/fortran/WS/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Workspace
|
||||||
|
|
||||||
|
This directory must exist if you want to run exemples.
|
@ -3,35 +3,17 @@ program dessiner
|
|||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
integer :: i
|
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)
|
||||||
|
|
||||||
call plsdev('xwin')
|
! call dessin_X11 (0.00, 1.51, 11)
|
||||||
call plinit ()
|
call dessin_dans_un_fichier ()
|
||||||
|
|
||||||
call plenv(-2.2, 2.2, -2.2, 2.2, 0, 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 ! -----------------------------
|
contains ! -----------------------------
|
||||||
!------------------------------------------------------
|
!------------------------------------------------------
|
||||||
subroutine dessin_1 (sha, shb, color)
|
subroutine dessin_X11 (sha, shb, color)
|
||||||
real, intent(in) :: sha, shb
|
real, intent(in) :: sha, shb
|
||||||
integer, intent(in) :: color
|
integer, intent(in) :: color
|
||||||
|
|
||||||
@ -40,8 +22,13 @@ subroutine dessin_1 (sha, shb, color)
|
|||||||
real :: k, amp
|
real :: k, amp
|
||||||
integer :: i
|
integer :: i
|
||||||
|
|
||||||
! print *, 'dessin 1'
|
print *, 'dessin X11:', sha, shb, color
|
||||||
amp = 2.0
|
|
||||||
|
call plsdev('xwin')
|
||||||
|
call plinit ()
|
||||||
|
call plenv (-2.1, 2.1, -2.1, 2.1, 1, 2)
|
||||||
|
|
||||||
|
amp = 2.16
|
||||||
do i = 1, lg
|
do i = 1, lg
|
||||||
k = real(i)/real(lg) * 6.2832 * 4.0
|
k = real(i)/real(lg) * 6.2832 * 4.0
|
||||||
x(i) = amp * sin((k+sha)*5)
|
x(i) = amp * sin((k+sha)*5)
|
||||||
@ -54,11 +41,55 @@ subroutine dessin_1 (sha, shb, color)
|
|||||||
call plcol0 (color)
|
call plcol0 (color)
|
||||||
call plline (x, y)
|
call plline (x, y)
|
||||||
|
|
||||||
|
call plend
|
||||||
|
|
||||||
end subroutine
|
end subroutine
|
||||||
!------------------------------------------------------
|
!------------------------------------------------------
|
||||||
subroutine dessin_2 ()
|
!- _ __ ___ ___ ___
|
||||||
|
!- __ _ (_) / _| ( _ ) / _ \ __ _ |__ \
|
||||||
|
!- / _` | | | | |_ / _ \ | (_) | / _` | / /
|
||||||
|
!- | (_| | | | | _| | (_) | \__, | | (_| | |_|
|
||||||
|
!- \__, | |_| |_| \___/ /_/ \__,_| (_)
|
||||||
|
!- |___/
|
||||||
|
|
||||||
|
subroutine dessin_dans_un_fichier ()
|
||||||
|
|
||||||
|
integer, parameter :: nbpts = 40
|
||||||
|
real :: x(nbpts), y(nbpts)
|
||||||
|
integer :: frame, i
|
||||||
|
character(len=89) :: filename
|
||||||
|
character(len=89) :: buffer
|
||||||
|
character(len=3) :: str
|
||||||
|
|
||||||
|
print *, 'Dessin dans un fichier'
|
||||||
|
|
||||||
|
do i=1, nbpts
|
||||||
|
x(i) = 8.50 * (rand() - 0.5000)
|
||||||
|
y(i) = 8.50 * (rand() - 0.5000)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
do frame= 0, 149
|
||||||
|
write (filename, "(a, i4.4, a)") "WS/A", frame, ".png"
|
||||||
|
print *, frame, ' => ', trim(filename)
|
||||||
|
call plsdev ('pngcairo')
|
||||||
|
call plsfnam (trim(filename))
|
||||||
|
call plinit ()
|
||||||
|
call plenv (-10., 10., -10., 10., 0, 1)
|
||||||
|
call plcol0 (3)
|
||||||
|
do i=1, nbpts
|
||||||
|
x(i) = x(i) + (rand() - 0.5000)
|
||||||
|
y(i) = y(i) + (rand() - 0.5000)
|
||||||
|
call plline (x, y)
|
||||||
|
enddo
|
||||||
|
write(buffer, "(i3.3)") frame
|
||||||
|
str = trim(buffer)
|
||||||
|
call plcol0 (15)
|
||||||
|
call plstring (x, y, buffer)
|
||||||
|
|
||||||
|
call plend
|
||||||
|
enddo
|
||||||
|
|
||||||
|
|
||||||
print *, 'dessin 2'
|
|
||||||
|
|
||||||
end subroutine
|
end subroutine
|
||||||
!------------------------------------------------------
|
!------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user