C'est avec un immense plaisir que je peux enfin poster une version 1.* du fichier POV de la lentille. Il m'aura fallu essayer et rater quelques jours et veiller et gagner quelques soirs pour qu'enfin tous les obstacles du langage soient franchis.
- translate n'est pas aussi puissant que je l'aurai espéré, j'ai donc laissé tomber et suis partie sur une version "statique" ou chaque anneau de la sphère creusée est déposée au centre de la scène autour de la précédente, comme un oignon (il existe d'ailleurs un pigment onion mais je préfère ne pas m'y risquer, à vous de plancher là dessus si vous souhaitez ;) ).
- Le code se compose d'une sphère, d'abord découpée pour obtenir une tranche verticale, laquelle est à son tour tranchée en son centre pour obtenir un anneau. La fonction mathématique pour trouver le diamètre exact du cylindre intérieur est en fait tout bêtement Pythagore : le triangle rectangle se trouve entre l'origine de la sphère et le cylindre, l'hypothénuse étant le rayon de la sphère. Plus facile à dire qu'à trouver :p Attention, on oubliera pas de multiplier la formule de calcul (a²+b²=c²) par 2, pour obtenir un diamètre et non seulement un rayon, ou ça ne donnera rien.
- il est nécessaire, avant de découper les tranches, de réserver l'extrémité de la sphère sans ce tranchage, pour que le disque de la lentille soit fermé et que la concentration des photons soit au rendez vous.
Je reste, malgré une légère déception à propos de translate, extrêmement satisfaite de POV ray, qui permet de réaliser des prouesses autrement plus impresionnantes que mon bricolage.
Je vous joins donc le code final, KISS et tout mignon (47 lignes de codes, commentaires compris).
#version 3.7; global_settings {assumed_gamma 1.0} // l'atelier light_source {<-6,2,0> rgb <1,1,1>} sky_sphere {pigment {gradient y scale 2 translate -1} } plane { <0,-1,0>, 1 pigment { wood } translate <0,-3,0> } // une table de travail camera { perspective //location <0,1,-8> // x,y,z vu de cote //location <0.5,4,0> // x,y,z vu de dessus location <-10,0,0> // x,y,z vu de face //location <-3,0,-2> // x,y,z vu de trois-quart look_at <0,0,0> } // --------- #declare x_sphere = -1.9; intersection { // premiere tranche, sans creusage sphere { x_sphere,0,0> 2 } cylinder { <0,0,0> <0.1,0,0> 2} pigment { rgbt <0,0,1,.7> } finish {phong 2} } #while (x_sphere < 0) #declare x_sphere = x_sphere+0.1; // Pour trouver le diametre du cercle interieur, on applique pythagore : // le rayon de la SPHERE est l'hypothenuse, // triangle est rectangle en x du CYLINDRE ;) #declare rayon_cylindre_interieur = 2 * sqrt(4 - ( -x_sphere * -x_sphere ) ); difference { intersection { sphere { 2 } cylinder { <0,0,0> <0.1,0,0> 2} } cylinder { <-2,0,0> <2,0,0> 0.62} pigment { rgbt <0,0,1,.7> } finish {phong 2} } #end
La prochaine étape ? Transposer ça en stl et s'attaquer à la recherche du matériau pour l'impression 3D !
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.