Compare commits

...

4 Commits

Author SHA1 Message Date
tTh
d96238bca4 add SDL2 stuff 2024-09-16 03:26:04 +02:00
tTh
3ea16fbbc8 add some stuff 2024-09-16 03:24:26 +02:00
tTh
f7d11b4178 cosmetic 2024-09-16 03:22:22 +02:00
tTh
28933d542c finished the first awk example 2024-09-16 03:21:41 +02:00
7 changed files with 145 additions and 17 deletions

View File

@ -9,7 +9,7 @@
Je n'ai certainement pas la prétention de vous enseigner Je n'ai certainement pas la prétention de vous enseigner
les arcanes du \textsl{R project}, les arcanes du \textsl{R project},
je suis (octobre 2023) en pleine périoe de découverte. je suis (octobre 2023) en pleine période de découverte.
Mais j'ai déja un projet concret en tête, et ce chapitre sera, Mais j'ai déja un projet concret en tête, et ce chapitre sera,
dans un premier temps, composé de mes notes de voyage. dans un premier temps, composé de mes notes de voyage.
@ -29,16 +29,17 @@ Le caractère \texttt{>} est le prompt de R, il vous invite à taper
des commandes afin qu'il vous explique le sens de la vie. des commandes afin qu'il vous explique le sens de la vie.
On peut définir des variables, leur donner une valeur et faire des calculs On peut définir des variables, leur donner une valeur et faire des calculs
avec ces variables, avec ces variables,
ce qui est bien suffisant pour commencer. Démonstration~: ce qui est bien suffisant pour commencer.
Une rapide démonstration~:
\begin{verbatim} \begin{verbatim}
> a <- 22 > a <- 22
> b <- 7 > b <- 7
> a ; b > a ; b
[1] 22 [1] 22
[1] 7 [1] 7
> a / b > a / b
[1] 3.142857 [1] 3.142857
\end{verbatim} \end{verbatim}
Les choses semblent simples, nous avons approximé $\pi$. Les choses semblent simples, nous avons approximé $\pi$.
@ -226,6 +227,7 @@ vers \LaTeX, peut-on faire de la 3D\index{3D}, \dots
hist(datas\$V3, breaks=50) hist(datas\$V3, breaks=50)
% ====================================================================== % ======================================================================
\section{Interface avec l'OS} \section{Interface avec l'OS}

View File

@ -1,7 +1,71 @@
\chapter{Graphisme} \chapter{Graphisme}
\label{chap:graphisme}
Voici quelques notes en vrac sur divers logiciels qui permettent Voici quelques notes en vrac sur divers logiciels
de faire des dessins et des images.\dots ou bibliothèques de fonctions qui permettent
de faire des dessins et des images\dots
Nous verrons ici (dans le désordre) SDL, Povray, Flydraw, Fortran,
et peut-être d'autres dans un avenir incertain.
Mais il en existe d'autres~:
Gnuplot (page \pageref{chap:gnuplot}),
\texttt{gif89a} (page \pageref{chap:gif89a}),
le dessin (page \pageref{chap:dessin}),
les images (page \pageref{chap:image}) et
les photos (page \pageref{chap:photos})\dots
Le sujet est vaste, en fait.
% ------------------------------------------------
% nouveau : Tue Sep 3 11:14:13 UTC 2024
\section{SDL2} \index{SDL} \label{sdl}
\begin{quote}
Simple DirectMedia Layer est une bibliothèque de développement multiplateforme conçue pour fournir un accès de bas niveau à l'audio, au clavier, à la souris,
aux joysticks et à la vidéo (via OpenGL/Direct3D/Metal/Vulkan).
\end{quote}
\textbf{Attention}, à l'heure\footnote{Wed Sep 4 00:40:42 UTC 2024} qu'il est,
j'utilise une version assez ancienne\footnote{Mais je vais me soigner\dots},
donc
ce que vous allez lire à propos de SDL doit être pris avec des pincettes.
D'autre part, la version \textbf{3} est sortie depuis un certain temps,
mais beaucoup de logiciels n'ont pas encore fait la transition.
Nous allons rester pour le moment avec la version 2.
\subsection{Afficher la version}
Et puisque on parle de version, ils ont pris une approche vraiment
interessante (dont je devrais d'ailleurs m'inspirer) dans le cas de
l'édition de lien dynamique.
\begin{verbatim}
SDL_version compiled;
SDL_version linked;
SDL_VERSION(&compiled);
SDL_GetVersion(&linked);
printf("We compiled against SDL version %d.%d.%d ...\n",
compiled.major, compiled.minor, compiled.patch);
printf("But we linked against SDL version %d.%d.%d.\n",
linked.major, linked.minor, linked.patch);
\end{verbatim}
% ------------------------------------------------
\subsection{Mon premier "bug"}
C'est en essayant quelques fonctions de la SDL dans le but de faire
un dégradé\footnote{On a toujours besoin de dégrader...} de couleurs
que je suis tombé sur une anomalie que je n'arrive pas (encore)
a m'expliquer.
\lstinputlisting[language=c]{code/SDL2/strangebug.c}
Mias c'est peut-être ma totale méconnaissance du sujet qui m'a
fait faire une bêtise àlc\dots
% ------------------------------------------------ % ------------------------------------------------
@ -206,7 +270,7 @@ material {
\section{Avec Fortran} \section{Avec Fortran}
plplot\index{plplot} est la piste à explorer. plplot\index{plplot} est une des pistes à explorer.
% ------------------------------------------------ % ------------------------------------------------

View File

@ -9,9 +9,12 @@ par Aho, Kernighan, and Weinberger%
\footnote{The AWK Programming Language, Alfred V. Aho, \footnote{The AWK Programming Language, Alfred V. Aho,
Brian W. Kernighan, Peter J. Weinberger, Addison-Wesley, 1988. Brian W. Kernighan, Peter J. Weinberger, Addison-Wesley, 1988.
ISBN 0-201-07981-X. }. ISBN 0-201-07981-X. }.
Son originalité vient du fait qu'il a été conçu principalement
pour traiter ligne par ligne des fichiers tabulés.
C'est son domaine de prédilection, autant en profiter.
Quelques \textsl{oneliners} de bon aloi pour vous donner Quelques \textsl{oneliners} de bon aloi pour vous donner
une idée du langage\dots une idée des possibilités du langage\dots
\begin{verbatim} \begin{verbatim}
cat { print $0 } or just 1 cat { print $0 } or just 1
@ -32,15 +35,17 @@ on va procéder en quelque sorte « demi-dalle par demi-dalle ».
\subsection{Un exemple simple} \subsection{Un exemple simple}
À partir d'un jeu de données structurées, nous allons générer un À partir d'un jeu de données structurées, nous allons générer un
fichier \texttt{.inc} contenant un objet pour Povray\index{Povray}. fichier \texttt{.inc} contenant la description en
SDL\index{SDL}\footnote{SDL: Scene Description Language}
d'un objet pour Povray\index{Povray}.
Un cas d'école : un élément par ligne, les valeurs sont séparées par Un cas d'école : un élément par ligne, les valeurs sont séparées par
des espaces. des espaces et/ou des tabulations.
\lstinputlisting[]{code/awk/dataset} \lstinputlisting[]{code/awk/dataset}
Ces données sont les coordonnées \textsc{x,y,z} et le rayon d'une Ces données sont les coordonnées \textsc{x,y,z} et le rayon d'une
petite collection de bubulles. Pratiquement, une représentation petite collection de bubulles. Pratiquement, une représentation
sommaire d'une sphère de povray\footnote{SDL keyword: \texttt{Sphere}}. sommaire d'une sphère de povray\footnote{SDL keyword: \texttt{sphere}}.
Le fichier à générer est en trois partie : l'en-tête, la liste Le fichier à générer est en trois partie : l'en-tête, la liste
des bubulles\index{bubulle} et l'en-pied, ce qui est bien raccord des bubulles\index{bubulle} et l'en-pied, ce qui est bien raccord
@ -49,7 +54,45 @@ le voir ici-même~:
\lstinputlisting[]{code/awk/mkunion.awk} \lstinputlisting[]{code/awk/mkunion.awk}
La première ligne est pour le traditionnel
\textsl{shebang}\index{shebang},
avec l'option \texttt{-f} pour que le contenu du script soit lu
par l'interpréteur Awk dès son lancement.
Ensuite, nous trouvons trois blocs délimités par des accolades,
deux d'entre eux étant précédés d'une « instruction ».
Le premier bloc, avec le mot-clef \textsc{BEGIN}, est exécuté
avant la lecture de la première ligne des données en entrée.
Nous l'utilisons pour créer l'en-tête d'un descripteur
d'objet pour Povray.
Le second bloc (sans label) est exécuté pour chaque ligne lue.
Et c'est ici que nous trouverons la magie.
Et le troisième bloc (\textsc{END}) sera exécuté à la fin, après
la lecture et le traitement du dernier enregistrement,
qui sera dans notre cas la dernière ligne.
Et à l'exécution~:
\begin{verbatim}
tth@redlady:~/Devel/TetaTricks/code/awk$ ./mkunion.awk < dataset
#declare Bubules = object
{
union {
sphere { <17.000000, 9.000000, 4.000000>, 1.500000 }
sphere { <11.000000, 0.800000, 2.300000>, 0.989000 }
sphere { <0.000000, 0.000000, 0.000000>, 1.000000 }
}
}
\end{verbatim}
% XXX to be continued XXX % XXX to be continued XXX
% =============================================================== % ===============================================================
\subsection{Définir une fonction}
% ===============================================================

View File

@ -1,15 +1,18 @@
#!/usr/bin/awk -f #!/usr/bin/awk -f
# create the sdl object: an union of sphere
BEGIN { BEGIN {
print "#declare Bubules = object" print "#declare Bubules = object"
print "{ \nunion { " print "{ \nunion { "
} }
# active portion of the code
{ {
printf(" sphere { <%f, %f, %f>, %f }\n", \ printf(" sphere { <%f, %f, %f>, %f }\n", \
$1, $2, $3, $4 ) $1, $2, $3, $4 )
} }
# closing sdl structure
END { END {
print " }\n}\n"
} }

View File

@ -1,6 +1,7 @@
plplotting plplotting
dessiner dessiner
printty
*.png *.png
*.gif *.gif

View File

@ -1,6 +1,14 @@
INCS = -I/usr/include/plplot -I/usr/lib/x86_64-linux-gnu/fortran/modules/plplot INCS = -I/usr/include/plplot -I/usr/lib/x86_64-linux-gnu/fortran/modules/plplot
# sinple examples
printty: printty.f90 Makefile
gfortran -g $< $(INCS) -o $@
# more complex garbage
plplotting: plplotting.f90 Makefile plplotting: plplotting.f90 Makefile
gfortran -g $< $(INCS) -lplplotfortran -o $@ gfortran -g $< $(INCS) -lplplotfortran -o $@

7
code/fortran/printty.f90 Normal file
View File

@ -0,0 +1,7 @@
! new: Sun Sep 15 05:04:37 UTC 2024
program hello
implicit none
print *, "This is the 'printty' program"
end