GALERIE    EN COURS    SCENES    MACROS    GUIDE    A PROPOS


Astroïde



Cette courbe est définie par l'équation suivante :
$$\begin{align} x &= acos(t)^n\\y &= bsin(t)^n\\z &= cos(\frac{t}{2})\\\\t &\in 0..2\pi\end{align}$$


Script :
#declare deuxpi = 2*pi;
#declare r = 0.25;

#declare currentPt = <0.00, 0.00, 0.00>;
#declare previousPt = <0.00, 0.00, 0.00>;
#declare theColor = rgb <0.00, 0.00, 0.00>;

#declare a = 5;
#declare b = 6;
#declare n = 3;

#declare i = 0;
#declare step = pi/250;
#while (i < deuxpi)
  #set theColor = rgb CH2RGB(degrees(i));
  #set currentPt = < a*pow(cos(i),n), b*pow(sin(i),n), sin(i*0.50) >;
  sphere { currentPt, r pigment { theColor } finish { courbeFinish } }
  #if(i!=0)
    cylinder {
      previousPt, currentPt, r
      pigment { theColor }
      finish { courbeFinish }
      }
  #end
  #set previousPt = currentPt;
  #set i=i+step;
#end

-- On déclare toute les variables nécessaires. Vous remarquerez que currentPt et previousPt sont déclarées avec le type vector et que theColor est déclarée avec le type color. La variable r fixe le rayon des sphères et des cylindres qui composent la courbe. Au plus cette valeur est faible, au plus la courbe est fine.

-- On déclare et on initialise la variable i à zéro. La variable t est déjà réservée sous POVRay.

-- Les variables a, b et n sont propres à cette courbe.

-- La variable step est déclarée ayant une valeur de \( \frac{pi}{250} \). Comme la courbe est représentée par les sphères et des cylindres, cette variable permet de fixer la "précision" avec laquelle la courne sera dessinée. Au plus cette variable est petite, au plus la courbe est présice. C'est donc cette variable qui fixe le nombre de sphères et de cylindres que POVRay devra dessiner. Et plus le nombre d'objets augmente, plus tel temps de rendu est long...

-- La boucle while permet alors de calculer les points de la courbe en fonction de la variable i. Cette variable sert aussi à calculer la couleur d'un point grace à la macro CH2RGB( ).

-- Notez la syntaxe particulière de l'élévation à la puissance dans POVRay : pow(valeur,exposant).



On obtient alors l'image suivante :
astroid