\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}

%====================================================================

\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{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}


%		------------------------------------------------

%		------------------------------------------------
