vers l'index général de l'aide / vers l'index des directives
Créer une fonction, une procédure, un module, complexe ou pas, qui sera paramétrable à chaque appel.
Cette macro pourra donner, en sortie, une forme, un nombre, une texture, ou un objet complexe, arbre, bibliothèque, fenêtre, herbe, lens flare, engrenage hélicoïdal, etc...
POV-Ray 3.1+sup.
Une macro est un ensemble, plus ou moins complexe, de commandes éventuellement "nourries" de paramètres spécifiés au moment ou la macro sera invoquée dans le script.
L'usage des macros permet de simplifier les scripts et de réaliser des opérations complexes inimaginables autrement. Une fois la macro écrite, elle pourra être réemployée indéfiniment par un simple appel. Les macros ont fait avancer POV-Ray un peu plus vers le monde de la programmation et certains problèmes ne sont solubles qu'à l'aide de macros.
Il est utile de connaître les variables locales, lorsqu'on crée des #macros.
Création -
// nom de la macro avec nom des paramètres #macro Ma_Macro (Parametre_1,...,Parametre_n) // développement de la macro blabla Parametre_1 //appel des paramètres .../.... blabla Parametre_n #end
Appel - On donne des valeurs concrètes aux paramètres. (Parametre_1,...,Parametre_n)
Ma_Macro(5,..,2)
Création de la Macro avec 5 paramètres
// déclaration de la macro avec nom des paramètres #macro Faire_Fenetre (Largeur_Ext, Hauteur_Ext, Largeur_Int, Hauteur_Int, Profondeur) // développement de la macro avec appel des paramètres #local Horz = (Hauteur_Ext - Hauteur_Int)/2; #local Vert = (Largeur_Ext - Largeur_Int)/2; difference{ box{<0,0,0>,<Largeur_Ext,Hauteur_Ext,Profondeur>} box{<Vert,Horz,-0.1>,<Largeur_Ext-Vert,Hauteur_Ext-Horz,Profondeur+0.1> } translate <-Largeur_Ext/2,-Hauteur_Ext/2,0> // pour centrer } #end
Appel de la Macro
Faire_Fenetre(5,5,4,4,15) // appelle la macro avec passage des paramètres object {Faire_Fenetre(5,5,3,3,1) pigment {Red} } // ou bien pour avoir un pigment union { Faire_Fenetre(5,5,1,1,1) pigment {Blue} // une autre manière object {...} ... }
Fenetre(5,5,3,3,1)
Fenetre(5,51,1,1)
auteur : Martial Rameaux