Descriptions et exemples pour le POV-Ray raytracer par Friedrich A. Lohmueller,
traduit en français par Henri Girard.
    CSG - Constructive Solid Geometry -
English English English
Italiano Italiano
Deutsch Deutsch

Page d'Accueil
- Tutoriel POV-Ray
- Téléchargement

  - CSG Constructive
            Solid
            Geometry
    - union + merge
   > difference
    - intersection
        et invers
    - clipped_by
    - surfaces

        coïncidentes
    - textures et CSG
                                           
Algèbre booléenne des Solides - part III

"difference"



difference{...}

Une opération "différence" soustrait d'un objet de base tous les objets secondaires du premier. On peut ainsi percer des trous et former toutes sortes de reliefs ou de creux. Cette commande est comme une machine à percer, le trou principal à la forme des objets qui suivront de la base. Le trou a la texture de l'objet soustrait. C'est la théorie.
Le piège insidueux - pas seulement pour les débutants – est un gouffre qui entraine beaucoup de frustrations :
C'est le problème des "surfaces de coïncidences". Si l'objet soustrait a des surfaces ambigües extérieures à l'objet soustrait, le programme n'est pas capable de savoir si un point de cette surface est soustraite ou non. La plupart du temps des points bariolés apparaissent à la place du trou ! Ce n'est pas une erreur du programme. L'origine de cet effect provient de l'arrondi que font les ordinateurs ! This effect has his origine in numerical problems because of inavoidable rounding by computers.
Il est essentiel d'éviter les surfaces coïncidentes en utilisant cette instruction.
(Voir aussi : "Surfaces coïncidentes")

Le défaut :
difference{
box{ <-0.5,0.0,-0.1>,< 0.5,1.0,0.1>
     texture{ pigment{ color rgb<1,0.65,0>}
              finish { phong 1.0 }}
   }
box{ <-0.3,0.2,-0.1>,< 0.3,0.8,0.1>
     texture{ pigment{ color Magenta}
              finish { phong 1.0 }}
   }
rotate<0,-30,0> translate<0,0,0>}
La Solution :
#declare D = 0.001; // Un très petit peu !
difference{
box{ <-0.5,0.0,-0.1>,< 0.5,1.0,0.1>
     texture{ pigment{ color rgb<1,0.65,0>}
              finish { phong 1.0 }}
   }
box{ <-0.3,0.2,-0.1-D>,< 0.3,0.8,0.1+D>
     texture{ pigment{ color Magenta }
              finish { phong 1.0 }}
   }
rotate<0,-30,0> translate<0,0,0>} 


CSG | union + merge | difference | intersection + inverse | clipped_by | surfaces coïncidentes | textures
top

© Friedrich A. Lohmüller, 2012
www.f-lohmueller.de