libtthimage/Docs/img-df3.html

131 lines
4.9 KiB
HTML

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>libimage: les df3 de povray</title>
<link rel="stylesheet" type="text/css" href="libimage.css">
<meta name="generator" content="Vim et huile de phalange">
<meta name="keywords" content="libimage, krabulator, operations">
</head>
<body>
<a name="top"><h1>libimage / les df3 de povray</h1></a>
<p align=center>
<tt>dernière mise à jour: 10 novembre 2013</tt><br>
<i>
<a href="http://tboudet.free.fr/libimage/img-df3.html">#</a> et
<a href="http://la.buvette.org/devel/libimage/img-df3.html">#</a>
</i>
</p>
<p class="menuhaut">
[<a href="libimage.html">libimage</a>]
[<a href="img-povhf15.html">height fields</a>]
</p>
<p class="explique">
The density_file pattern is a 3-D bitmap pattern that occupies a unit
cube from location &lt;0,0,0&gt; to &lt;1,1,1&gt; The data file is a raw binary
file format created for POV-Ray called df3 format. The syntax provides
for the possibility of implementing other formats in the future. This
pattern was originally created for use with halo or media but it may
be used anywhere any pattern may be used.
</p>
<p>
Bon, il faut avouer que le code actuel est totalement buggué, que son
<small>API</small> est pitoyable, et que je n'y consacre pas autant
d'énergie qu'il le faudrait. Vous pouvez quand même aller
<a href="/POV/df3.html">voir</a> l'avancement des essais.
</p>
<h2>Primitives</h2>
<p>
C'est toujours en cours de mise au point. Les <small>API</small> ne sont
pas encore figées.
</p>
<dl class="proto">
<dt>DensityF3Head * Image_df3_alloc(char *nom, int x, int y, int z, int b);
<dd>Création d'un objet de type <small>DF3</small>. Les trois paramètres
<tt>x, y &amp; z</tt> sont les dimensions, <tt>b</tt> est le nombre
prévu de bytes par cellule à l'enregistrement dans un fichier. Les
divers autres attributs sont initialisés à une valeur raisonnable.
Chaque cellule est stockée dans un <i>double</i>, avec 1.0 représentant
la valeur maximum.
<dt>int Image_df3_free(DensityF3Head *ptr);
<dd>Destruction féroce d'un objet de type <small>DF3</small>. Si la valeur
de retour n'est pas nulle, c'est catastrophe.
<dt>int Image_df3_put(DensityF3Head *ptr, int x, int y, int z, double dv);</dt>
<dd>Dépose une valeur dans le machin. Retourne <small>INVALID_PARAM</small>
si les coordonnées xyz sont en dehors du cube. Devrait aussi retourner un
errcode si la valeur est en dehors des valeurs légales.</dd>
<dt>int Image_df3_get(DensityF3Head *ptr, int x, int y, int z, double *pdv);</dt>
<dd>Lecture d'une valeur dans le machin. Si en dehors du cube,
renvoie <small>INVALID_PARAM</small>.</dd>
<dt>int Image_print_DF3head(DensityF3Head *h, char *txt, int flag);
<dd>Affichage (plus ou moins) en clair d'un descripteur de DF3. Si la
valeur de retour n'est pas nulle, c'est qu'un problême a peut-être
été détecté.
<dt>int Image_df3f_get_dims(char *fname, int dims[], int display);
<dd>Lecture des dimensions d'un fichier df3. L'argument <tt>dims</tt>
doit être un <tt>int dims[3]</tt>. Si <tt>display</tt> est différent de
zéro, des trucs seront affichés.
<dt>int Image_df3_export(DensityF3Head *ptr, char *fname, int nbbytes);</dt>
<dd>Enregistrement des données dans un fichier. Si <tt>nbbytes</tt> est à
zéro, c'est la valeur donnée à la création de la structure qui sera
utilisée. Sinon, on donne 1, 2 ou 4.
</dl>
<h2>Essais divers</h2>
<p>Attention, à ce jour (2 mars 2008), ces fonctions ne travaillent
que sur des fichiers à un octet [0..255] par cellule. On peut en
fait les classer dans la catégorie <i>bricolages divers</i> pour
se rassurer si elles ne fonctionnnent pas.
</p>
<dl class="proto">
<dt>int Image_df3_xper_0(Image_Desc *src, char * fname_df3, int k);
<dd>Tentative de fabrication d'un fichier DF3 à partir d'une image en RGB.
Le résultat n'est pas concluant, mais l'idée mérite d'être approfondie.
<dt>int Image_df3_plot_histo(char *fname_df3, char *nomtga, int flag);
<dd>Histogramme linéaire du contenu d'un fichier DF3. Utilité plus que
douteuse. Nous allons essayer da faire mieux.
<dt>int Image_df3f_2_txt(char *nomdf3, char *nomtxt);
<dd>Dump d'un fichier df3 dans un fichier texte, à priori <i>parsable</i>
par les outils Unix classiques.
<dt>int
Image_df3f_2_povinc(char *nomdf3, char *nominc, char *nomobj, int k, double dv);</dt>
<dd>C'est cette fonction qui est actuellement en cours de test dans cette
<a href="http://la.buvette.org/POV/ex/df3.html">page</a>, et les résultats
semblent prometteurs. Le paramètre <tt>k</tt> contrôle le type du machin
qui va servir à matérialiser le contenu de la cellule. Pour le moment,
il n'y a que la bouboule.
</dd>
</dl>
<p>Il existe d'autres fonctions pour traiter les types de données
qu'utilise POVray : les <a href="img-povhf15.html">champs d'altitude</a> pour
le moment.</p>
<hr noshade>
<p align=center>[ <a href="http://tboudet.free.fr/cv.html">tTh cherche</a> ]</p>
</body>
</html>