147 lines
3.5 KiB
TeX
147 lines
3.5 KiB
TeX
\chapter{Graphisme}
|
|
|
|
Quelques notes en vrac sur divers logiciels\dots
|
|
|
|
% ------------------------------------------------
|
|
|
|
\section{Flydraw}\index{Flydraw}
|
|
|
|
Comment faire des dessins en écrivant des lignes de codes ?
|
|
|
|
\begin{quote}
|
|
flydraw is a drawing tool based on an interpreter which parses a
|
|
language featuring rich graphic primitives; it uses libgd to output
|
|
GIF, JPEG, or PNG\index{PNG} files.
|
|
\end{quote}
|
|
|
|
\lstinputlisting{code/dessiner.fly}
|
|
|
|
Pour le moment, les résultats ne sont pas encourageants~:
|
|
\begin{verbatim}
|
|
tth@fubar:~/Documents/TetaTricks/code$ flydraw < dessiner.fly
|
|
bad_parms -100000
|
|
tth@fubar:~/Documents/TetaTricks/code$
|
|
\end{verbatim}
|
|
|
|
Mais en s'obstinant un peu au \textsl{cargocult}, il
|
|
s'avère que la documentation et le code semble ne sont
|
|
pas d'accord. Et les messages d'erreur trop
|
|
cryptiques pour moi. Donc, on y arrive.
|
|
|
|
\begin{figure}[h]
|
|
\begin{center}
|
|
\includegraphics[scale=0.75]{code/flydraw}
|
|
\caption{Flydraw}
|
|
\end{center}
|
|
\end{figure}
|
|
|
|
Ceci dit, une lecture attentive du code source\footnote{UTSL} permettra
|
|
de contourner ces petits désagréments, et de rédiger quelques exemples
|
|
d'utilisation amusants.
|
|
|
|
% package source
|
|
% http://deb.debian.org/debian/pool/main/w/wims/wims_4.17b+svn13454~dfsg1.orig.tar.gz
|
|
|
|
%====================================================================
|
|
|
|
\section{Povray}\index{POVray}
|
|
|
|
\textbf{Persistence Of Vision} est un logiciel de raytracing qui
|
|
existe depuis plus de trente ans. C'est un lointain descendant
|
|
de DKBtrace.
|
|
|
|
\subsection{Caméra}
|
|
|
|
Vous avez des problèmes pour caler les mouvement de la caméra ?
|
|
Vous avez deux trajectoires (mal) calculées pour la
|
|
\texttt{location} et le \texttt{look\_at}, et rien ne tombe
|
|
en face de l'objectif ? Voici une approche de solution.
|
|
|
|
La première étape est l'enregistrerement des paramètres de la caméra
|
|
lors du calcul de la séquence~:
|
|
|
|
\begin{verbatim}
|
|
#if (0 = clock)
|
|
#fopen CL "cam.log" create
|
|
#else
|
|
#fopen CL "cam.log" append
|
|
#end
|
|
#write (CL, clock, " ", CamX, " ", CamY, " ", CamZ,
|
|
" ", LatX, " ", LatY, " ", LatZ,"\n")
|
|
#fclose CL
|
|
\end{verbatim}
|
|
|
|
Et la seconde, l'exploitation, ou plutôt la visualisation
|
|
des données~:
|
|
|
|
\begin{verbatim}
|
|
#!/bin/bash
|
|
|
|
FILE="cam.log"
|
|
TMPF="/dev/shm/cam.data"
|
|
IMAGE="graphe.png"
|
|
tail -360 ${FILE} | sort -n > ${TMPF}
|
|
gnuplot << __EOC__
|
|
set term png size 720,720
|
|
set output "${IMAGE}"
|
|
set ytics 2
|
|
set xtics 2
|
|
set grid front
|
|
set title "Rush Camera"
|
|
plot "${TMPF}" using 2:4 title "Cam", \
|
|
"${TMPF}" using 5:7 title "Lat" with dots
|
|
__EOC__
|
|
display "${IMAGE}" &
|
|
\end{verbatim}
|
|
|
|
Dans ce cas, il s'agit d'une animation de 360 images, ce qui explique
|
|
la commande\texttt{tail} au début du script. Ensuite les deux clauses
|
|
\textsl{using 2:4 / 5:7} permettent de sélectionner les deux
|
|
coordonnées X et Z, dans le repère POVray, qui n'est pas le même que
|
|
celui de Gnuplot.
|
|
|
|
|
|
% ------------------------------------------------
|
|
\subsection{image\_map}
|
|
|
|
% ------------------------------------------------
|
|
|
|
\subsection{height\_field}
|
|
|
|
Les champs d'altitude... Toute une histoire...
|
|
|
|
\begin{verbatim}
|
|
#declare Champ_Altitude = object
|
|
{
|
|
height_field {
|
|
png "WS/hf5.png" gamma 1.8
|
|
}
|
|
pigment { color Cyan }
|
|
scale 2
|
|
}
|
|
\end{verbatim}
|
|
|
|
% ------------------------------------------------
|
|
|
|
\subsection{Trucs à voir}
|
|
|
|
\begin{verbatim}
|
|
|
|
#declare VIRGINIA =
|
|
transform {
|
|
matrix < 1, 1, 0,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
0, 0, 0 >
|
|
}
|
|
|
|
box { 0, 1
|
|
transform {VIRGINIA}
|
|
}
|
|
\end{verbatim}
|
|
|
|
|
|
% ------------------------------------------------
|
|
|
|
% ------------------------------------------------
|