Projet POV-Ray - Sea, shells and sun
Objectif : création d'une scène photo-réaliste suivant les contraintes du sujet et les possibilités offertes par POV-Ray 3.5, en particulier les isosurfaces.
Introduction
L'objet pincipal de ce projet est le coquillage. Sa modélisation fera appel aux isosurfaces. Afin de le mettre en valeur, on l'intégrera dans une scène côtière comportant de l'eau, un rivage, divers objets (roches, poissons, végétaux, épave, ...) et une illumination réaliste. Le choix de la mise en scène (rivage, subaquatique, ...) appartient à l'auteur de l'image.
Les isosurfaces appliquées à la modélisation des coquillages
Tout ce qui suit est tiré du livre "Open Geometry" de Georg Glaeser et Hellmuth Stachel, édition Springer.
On distingue plusieurs types de surfaces en fonction du type de trajectoire et de courbe génératrice. On étudie par la suite les différentes trajectoires adaptées à la modélisation d'une coquille.
Les surfaces spiroïdales
Déplacement hélicoïdal : soit un axe a dans l'espace euclidien 3D, ce déplacement est la combinaison d'une rotation autour de a à vitesse angulaire constante et d'une translation le long de a à vitesse également constante. La relation qui lie l'angle a de rotation et la longueur l de la translation peut s'écrire :
$ p Î R*, l = p.a
On constate que la courbe résultante s'inscrit sur la surface d'un cylindre de révolution d'axe a.
Déplacement spiralé : soit le même axe a et un point fixe O sur a (point asymptotique), une spirale est une famille continue de rotations élastiques, chacune d'entre elles étant le produit (commutatif) d'une rotation autour de a et d'une homothétie de centre O, ce que l'on peut écrire :
$ p Î R*, s = epa
s est appelé facteur d'"élasticité".
Une trajectoire spiralée est contenue dans un cône de révolution d'axe a et de sommet O. Sa projection normale à un plan P contenant O, perpendiculaire à a, est une spirale logarithmique.
Surface spiralée : elle est obtenue en appliquant un déplacement spiralée (a, O, p) à une courbe k (qui ne doit pas être elle-même une spirale).
Approche analytique : nous décrivons ci-dessous les courbes et les surfaces spiroïdales dans un système de coordonnées cartésien.
Courbe passant par P(x0, y0, z0) :
x(a) = epa(x0 cos a - y0 sin a)
y(a) = epa(x0 sin a + y0 cos a)
z(a) = z0 epa
Surface paramétrée par la courbe (x(u), y(u), z(u)) :
x(u,a) = epa(x(u) cos a - y(u) sin a)
y(u,a) = epa(x(u) sin a + y(u) cos a)
z(u,a) = z(u) epa
Exemple d'application :
Une ellipse comme courbe génératrice,soient r et s les demi-longueurs de l'axe primaire et secondaire, on a :
x(u) = s + s cos u
y(u) = 0
z(u) = r sin u
(avec u Î [0, 2p], r = 35, s = 25 et p = 0,4 par exemple image de gauche)
On pourra aussi mettre à profit ses connaissances sur les courbes splines en les utilisant comme courbe génératrice (les deux images de droite).
Les surfaces hélispiroïdales
Surfaces à la fois hélicoïdales et spiroïdales, elles s'expriment comme la combinaison d'une rotation d'angle a autour d'un axe a et d'une dilatation proportionnelle (non exponentielle) à p (facteur de proportion) pa par rapport à un point fixe O Î a.
Soient O(0, 0, s) et p, la trajectoire d'un point (r0, j0, z0) en coordonnées cylindriques est décrite par le paramètre temporel t :
r = p.t.r0
j = j0 - 1/p + t
z = s + p.t (z0 - s)
L'équation paramétrique d'une rotation autour d'un axe a, d'un angle 1/p - j0 s'écrit :
x(t) = p.t.r0 cos t
y(t) = p.t.r0 sin t
z(t) = s + p.t (z0 - s)
Matériel supplémentaire
- ShellyLib : a small library to create shapes of seashells and snails runs on Linux, Win95-Vista and MacOSX.