vers l'index général de l'aide
Voici un répertoire de toutes les opérations mathématiques qui peuvent être contenues dans une définition de fonction d'isosurface. Attention, ces opérations sont spécifiques aux isosurfaces, et diffèrent parfois de la syntaxe générale de POV-Ray concernant les opérateurs.
x, y, z : les trois plans de l'espace
r, s : (inusités)
clock : notre bonne vieille variable externe
pi : 3.14159..
Nous avons déjà utilisé x, y et z, et l'utilisation des autres constantes semble assez évidente.
//une sphère dont le rayon croît avec clock isosurface { function {x^2 + y^2 + z^2 - clock} threshold 0 contained_by {box {-1,1}} }
+ : addition
- : soustraction
* : multiplication
/ : division
^ : puissance
% : modulo
sqrt() : racine carrée
sqr() : élever au carré (puissance 2)
cub() : élever au cube (puissance 3)
exp() : exponentielle
ln () : logarithme neperien
Nous avons déjà utilisé la plupart de ces opérateurs.
//un.. euh.. machin à base de racines carrées isosurface { function {sqrt(x) + sqrt(y) + z*1} threshold 0 contained_by {box {-1,1}} }
& : ET logique (correspond à une intersection CSG)
| : OU logique (correspond à une union CSG)
//l'union d'une sphère et d'un plan #declare Rayon=1; isosurface { function {(x*0 + y*1 + z*0) | (x*x + y*y + z*z - Rayon)} threshold 0 contained_by {box {-1,1}} }
min(a,b) : retourne la plus petite des deux valeurs
max(a,b) : retourne la plus grande des deux valeurs
if(a, b, c) : si a>0, retourne b, sinon retourne c
cos(), cosh(), acos(), acosh() : cosinus, etc.. (en radians)
sin(), sinh(), asin(), asinh() : sinus, etc..
tan(), tanh(), atan(), atanh() : tangente, etc..
atan2(a, b) : arctangente de b/a, précis même quand a=0
degrees(a) : convertir les radians en degrés
radians(a) : convertir les degrés en radians
Ici, ça devient très amusant, on va jouer à faire des vagues !
//une vague. remarquez que cette fonction se base sur un plan y, puisqu'il faut //bien avoir quelque chose à moduler. isosurface { function {cos(x) + y*1 + z*0} threshold 0 contained_by {box {-1,1}} pigment {Check1} finish {phong .7} }
Pour contrôler l'allure de la vague, il faut intervenir autour du cosinus avec des coefficients. Un coefficient appliqué à la constante du plan ajustera la fréquence, tandis qu'un coefficient appliqué au cosinus lui-même ajustera l'amplitude.
#declare A=.1; #declare F=10; isosurface { function {cos(x*F)*A + y*1 + z*0} threshold 0 contained_by {box {-1,1}} }
abs() : valeur absolue
ceil(a) : arrondi (entier sup.) de a
floor(a) : arrondi (entier inf.) de a
noise3d(x, y, z) : produit un bruit fractal tridimensionnel pour perturber les surfaces
(un peu désuet depuis que l'on peut utiliser des pigments comme fonctions).
//une sphere perturbée... isosurface { function {x^2 + y^2 + z^2 - Rayon + noise3d (x*4,y*4,z*4)} threshold 0 contained_by {box {-1,1}} }
Remarque : les coefficients agissent en amplitude et fréquence comme c'est expliqué plus haut.
Rédacteur: Fabien Mosen