vers l'index général de l'aide
Afin de permettre des raccourcis, ou l'utilisation de fonctions algorithmiques qui ne sont pas définissables avec la syntaxe "normale", des librairies de - très nombreuses - fonctions ont été implémentées.
L'apport de ces fonctions ayant été un peu hétéroclite, et leur documentation souvent absente, il est un peu pénible d'essayer de les documenter, mais nous essayerons de compléter cette page au fil du temps.
Historiquement, la première version du "patch isosurfaces" n'existait que sous Windows, l'emploi des librairies sous forme de fichiers .dll rendant le "portage" difficile. Avec l'apparition de MegaPOV, ces fonctions ont été incluses dans le propre code de POV-Ray, afin de les rendre disponibles sur toutes les plateformes. La classification de ces fonctions est la "trace" de l'époque où les librairies étaient externes, et il est difficile de prévoir, à long terme, leur évolution.
function {"nom_de_la_fonction",<P1,P2,P3,...>}
Cette syntaxe est valable à l'intérieur de l'isosurface ainsi que dans les fonctions pré-déclarées, le nom de la fonction étant suivi d'un certain nombre de paramètres, selon la fonction choisie.
nom de la fonction | descriptif | paramètres | formule | exemple |
"imp_func" | ? | |||
"R" | sphere (si seuil=rayon) | sqrt(x*x+y*y+z*z) | ||
"TH" | tore hyperbolique?? (si seuil>0) | atan2(x,z) | ||
"PH" | parabole hyperbolique??! (si seuil>0) | atan2(sqrt(x*x + z*z ),y) | ||
"sphere" | sphere | P0 : rayon | f=sqrt(x^2+y^2+z^2)-P0 | |
"helix1" | hélice | P0 : nombre d'hélices P1 : fréquence P2 : petit rayon P3 : grand rayon P4 : paramètre de forme P5 : section (<1 = rectangle arrondi, 1=cercle, 2=diamant) P6 : angle de rotation lorsque P5<1 | function {"helix1",<1,4, .2,1, 1,.5, 30>} | |
"helix2" | hélice | P0 : (y'a pas) P1 : fréquence P2 : petit rayon P3 : grand rayon P4 : paramètre de forme P5 : section (<1 = rectangle arrondi, 1=cercle, 2=diamant) P6 : angle de rotation lorsque P5<1 | ||
"spiral" | ? | |||
"mesh1" | grillage | P0 : maillage en x P1 : maillage en z P2 : paramètre de forme 1 P3 : amplitude P4 : paramètre de forme 2 | #declare Msh1 = function {"mesh1", <1, 1, 1, 0.17, 1>} function {Msh1 - .2} | |
"rounded_box" | boîte arrondie | P0 : rayon de l'arrondi | ||
"torus" | boîte arrondie | P0 : rayon majeur, P1 : rayon mineur |
r1=sqrt(x*x+z*z)-P0; f= sqrt(r1*r1+y*y)-P1; | |
"superellipsoid" | superellipsoïde | P0 : paramètre 1, P1 : paramètre 2; voyez l'objet équivalent de POV-Ray pour le fonctionnement des paramètres |
f = (|x|^(2/P0) + |y|^(2/P0)) ^ (P0/P1) + |z|^(2/P1) - 1 = 0 | |
"ridgedmf" | multifractale à crêtes (génial pour faire des rochers et des montagnes !) | voyez la description complète ici | ||
"heteroMF" | multifractale hétérogène | ... | ||
"Hexagon" | ... | ... |
note : dans certains cas, afin de préserver un seuil de 0, les exemples consistent à pré-déclarer la fonction, puis à l'utiliser en lui soustrayant la valeur de seuil. Cela peut paraître tordu, mais c'est plus élégant, et ça facilite les combinaisons.
Rédacteur: Fabien Mosen