//-------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------
// Fichier scène PoVRay 3.7 "engrenage.pov"
//
// auteur: Damien Monteillard, 19-Février-2010
// email:
lastrodamo@gmail.com
//
// cd /home/damien/povray/test/engrenage/
// povray engrenage.pov +w1024 +h800 +A +FN +KI0 +KF1 +KFI1 +KFF49 +KC
// Rendu
// povray engrenage.pov +w1280 +h1024
// Convertir en mpg
// ffmpeg -f image2 -i engrenage%02d.png engrenage.mpg
// ffmpeg -f image2 -i engrenage%02d.png -s 800x600 -ar 44100 -aspect 4:3 -b 14000k -r 30 -acodec mp3 -ab 64 engrenage.mpg
// convert -delay 4 *.png engrenage.mpg
//-----------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------
#include "colors.inc"
#include "textures.inc"
#include "metals.inc"
#include "golds.inc"
#include "stones.inc"
#include "woods.inc"
#include "shapes.inc"
#include "shapes2.inc"
#include "shapesq.inc"
// #include "shapes_lo.inc"
#include "functions.inc"
#include "math.inc"
#include "transforms.inc"
// Textures Noire ----------------------------------------------------------------
#declare TextureNoire =
texture{pigment{color rgb<0,0,0>}
finish{diffuse 1 phong 1}}
// Textures Blanche -------------------------------------------------------------
#declare TextureBlanche =
texture{pigment{color rgb<1,1,1>}
finish{diffuse 1 phong 1}}
// Texture Bleue ---------------------------------------------------------------
#declare TextureBleue =
texture{pigment{color rgb<0.28,0.28,0.60>}
finish{diffuse 1 phong 1}}
// Texture Bleue 2 ---------------------------------------------------------------
#declare TextureBleue2 =
texture{
pigment{
// color Navy
// color NavyBlue
color MidnightBlue
}
finish{diffuse 1 phong 1}}
// Texture Grise ---------------------------------------------------------------
#declare TextureGrise =
texture{pigment{color rgb<1,1,1>}
finish{diffuse 1 phong 1}}
// Texture Rouge ---------------------------------------------------------------
#declare TextureRouge =
texture{pigment{color Red}
finish {diffuse 0.9 phong 1}}
// Texture Verte ---------------------------------------------------------------
#declare TextureVerte =
texture{pigment{color Green*0.5}
finish {diffuse 0.9 phong 1}}
// Texture Verte Clair ---------------------------------------------------------
#declare TextureVerte2 =
texture{pigment{color rgb<0.65,1,0>}
finish {diffuse 1 phong 1}}
// Texture Jaune ---------------------------------------------------------------
#declare TextureJaune =
texture{pigment{color rgb<1,1,0>}
finish {diffuse 1 phong 1}}
// Texture Jaune 2 ---------------------------------------------------------------
#declare TextureJaune2 =
texture{pigment{color rgb<0.87,0.78,0.32>}
finish {diffuse 1 phong 1}}
// Texture Violet ---------------------------------------------------------------
#declare TextureViolet =
texture{pigment{color rgb<0.33,0.18,0.58>}
finish {diffuse 1 phong 1}}
// Texture Violet 2 ---------------------------------------------------------------
#declare TextureViolet2 =
texture{pigment{
// crackle
// gradient <0,1,0> turbulence 1.0
bozo
scale 1.0 turbulence 0.75
color_map{
[0.30 color rgb<0.33,0.18,0.58>] // Violet
[0.60 color rgb<0.65,1.00,0.00>] // Vert
// [0.50 color rgb<0.33,0.33,0.69>] // Bleue
[0.60 color rgb<0.87,0.78,0.32>] // Jaune
}
scale 2.0
}
// normal { bumps 0.75 scale 0.02}
finish {diffuse 1 phong 0}}
// Texture Or ------------------------------------------------------------------
#declare TextureOr =
texture{pigment{color rgb<0.87,0.78,0.32>}
normal {
crackle 0.5
// gradient <0,1,0> turbulence 1.0
// bozo
scale 0.15}
finish {phong 1}}
// Texture Metal -----------------------------------------------------------------
#declare TextureMetal =
texture{Silver_Metal}
// Texture Cuivre -----------------------------------------------------------------
#declare TextureCuivre =
texture{Copper_Metal}
// Texture New Brass ---------------------------------------------------------------
#declare TextureNewBrass =
texture{New_Brass}
// Texture Chrome Metal -----------------------------------------------------------
#declare TextureChrome =
texture{Chrome_Metal}
// Texture Sapphire Agate ---------------------------------------------------------
#declare TextureSapphireAgate =
texture{Sapphire_Agate}
// Camera ---------------------------------------------------------------------------------------
camera
{
location <260,260,-260>
// location <0,0,-360>
look_at <0,-140,160>
// look_at <80,-35,0>
rotate <0,0,0>
}
// Source de lumière -----------------------------------------------------------------------------
light_source
{
<2000,2000,-2000>
rgb <1,1,1>
rotate <0,0,0>
}
// Plan (Sol) -----------------------------------------------------------------------------------
//plane {
// <0,1,0>
// 0
// rotate<0,0,0>
// translate<0,0,0>
// texture{TextureBlanche}
//}
// Plan (Mur 1) ----------------------------------------------------------------------------------
//plane {
// <0,0,1>
// 200
// rotate<0,0,0>
// translate<0,0,0>
// texture{TextureBlanche}
//}
#declare engrenage =
union{
// dent -------------------------------------------------------
#declare dent =
difference{
// Epaisseur de l'engrenage ------------------------------------
#declare pz1 =-8;
#declare pz2 = 8;
// Epaisseur de l'engrenage ------------------------------------
#declare pz1d =pz1-1;
#declare pz2d =pz2+1;
// Module ------------------------------------------------------
#declare m = 2.5;
// Pas primitif -----------------------------------------------
#declare p = pi*m;
// Angle de pression ------------------------------------------
#declare a = 20;
// Pas de base ------------------------------------------------
#declare pb = p*cos(a);
// Nombre de dents ---------------------------------------------
#declare Z = 35;
// Angle d'une dent
#declare ad = 360/Z;
// hauteur de dent --------------------------------------------
#declare ha = m;
#declare hf = 1.25*m;
#declare h = ha+hf;
// diamètre primitif -------------------------------------------
#declare d =m*Z;
// diamètre de tête --------------------------------------------
#declare da = d+2*m;
// diamètre de base --------------------------------------------
#declare df = d-2*m;
// développante de cercle ----------------------------------------------
#declare developpante =
difference{
#declare extrusiondeveloppante =
union{
#declare x1 =-d*sin(((pi/2)/9)*1);
#declare y1 = d*cos(((pi/2)/9)*1);
#declare z1 = 0;
#declare x2 =-d*sin(((pi/2)/9)*2);
#declare y2 = d*cos(((pi/2)/9)*2);
#declare z2 = 0;
#declare x3 =-d*sin(((pi/2)/9)*3);
#declare y3 = d*cos(((pi/2)/9)*3);
#declare z3 = 0;
#declare x4 =-d*sin(((pi/2)/9)*4);
#declare y4 = d*cos(((pi/2)/9)*4);
#declare z4 = 0;
#declare x5 =-d*sin(((pi/2)/9)*5);
#declare y5 = d*cos(((pi/2)/9)*5);
#declare z5 = 0;
#declare x6 =-d*sin(((pi/2)/9)*6);
#declare y6 = d*cos(((pi/2)/9)*6);
#declare z6 = 0;
#declare x7 =-d*sin(((pi/2)/9)*7);
#declare y7 = d*cos(((pi/2)/9)*7);
#declare z7 = 0;
#declare x8 =-d*sin(((pi/2)/9)*8);
#declare y8 = d*cos(((pi/2)/9)*8);
#declare z8 = 0;
#declare x9 =-d*sin(((pi/2)/9)*9);
#declare y9 = d*cos(((pi/2)/9)*9);
#declare z9 = 0;
#declare r1 = x1*cos(((pi/2)/9)*1);
#declare r2 = x2*cos(((pi/2)/9)*2);
#declare r3 = x3*cos(((pi/2)/9)*3);
#declare r4 = x4*cos(((pi/2)/9)*4);
#declare r5 = x5*cos(((pi/2)/9)*5);
#declare r6 = x6*cos(((pi/2)/9)*6);
#declare r7 = x7*cos(((pi/2)/9)*7);
#declare r8 = x8*cos(((pi/2)/9)*8);
#declare r9 = x9*cos(((pi/2)/9)*9);
// Extrusion développante -----------------------------------------------
cylinder{
<0,0,pz1>, <0,0,pz2>, r1*2
translate<x1,y1,z1>
}
cylinder{
<0,0,pz1>, <0,0,pz2>, r2*2
translate<x2,y2,z2>
}
cylinder{
<0,0,pz1>, <0,0,pz2>, r3*2
translate<x3,y3,z3>
}
cylinder{
<0,0,pz1>, <0,0,pz2>, r4*2
translate<x4,y4,z4>
}
cylinder{
<0,0,pz1>, <0,0,pz2>, r5*2
translate<x5,y5,z5>
}
cylinder{
<0,0,pz1>, <0,0,pz2>, r6*2
translate<x6,y6,z6>
}
cylinder{
<0,0,pz1>, <0,0,pz2>, r7*2
translate<x7,y7,z7>
}
cylinder{
<0,0,pz1>, <0,0,pz2>, r8*2
translate<x8,y8,z8>
}
cylinder{
<0,0,pz1>, <0,0,pz2>, r9*2
translate<x9,y9,z9>
}
} // fin de l'extrusion de la développante de cercle -------------------
object {
extrusiondeveloppante
}
// Découpe développante -----------------------------------------------
#declare decoupedeveloppante =
union{
#declare x1 = d*sin(((pi/2)/9)*1);
#declare y1 = d*cos(((pi/2)/9)*1);
#declare z1 = 0;
#declare x2 = d*sin(((pi/2)/9)*2);
#declare y2 = d*cos(((pi/2)/9)*2);
#declare z2 = 0;
#declare x3 = d*sin(((pi/2)/9)*3);
#declare y3 = d*cos(((pi/2)/9)*3);
#declare z3 = 0;
#declare x4 = d*sin(((pi/2)/9)*4);
#declare y4 = d*cos(((pi/2)/9)*4);
#declare z4 = 0;
#declare x5 = d*sin(((pi/2)/9)*5);
#declare y5 = d*cos(((pi/2)/9)*5);
#declare z5 = 0;
#declare x6 = d*sin(((pi/2)/9)*6);
#declare y6 = d*cos(((pi/2)/9)*6);
#declare z6 = 0;
#declare x7 = d*sin(((pi/2)/9)*7);
#declare y7 = d*cos(((pi/2)/9)*7);
#declare z7 = 0;
#declare x8 = d*sin(((pi/2)/9)*8);
#declare y8 = d*cos(((pi/2)/9)*8);
#declare z8 = 0;
#declare x9 = d*sin(((pi/2)/9)*9);
#declare y9 = d*cos(((pi/2)/9)*9);
#declare z9 = 0;
#declare r1 = x1*cos(((pi/2)/9)*1);
#declare r2 = x2*cos(((pi/2)/9)*2);
#declare r3 = x3*cos(((pi/2)/9)*3);
#declare r4 = x4*cos(((pi/2)/9)*4);
#declare r5 = x5*cos(((pi/2)/9)*5);
#declare r6 = x6*cos(((pi/2)/9)*6);
#declare r7 = x7*cos(((pi/2)/9)*7);
#declare r8 = x8*cos(((pi/2)/9)*8);
#declare r9 = x9*cos(((pi/2)/9)*9);
// Découpe développante -------------------------------------------------
cylinder{
<0,0,pz1d>, <0,0,pz2d>, r1*2
translate<x1,y1,z1>
}
cylinder{
<0,0,pz1d>, <0,0,pz2d>, r2*2
translate<x2,y2,z2>
}
cylinder{
<0,0,pz1d>, <0,0,pz2d>, r3*2
translate<x3,y3,z3>
}
cylinder{
<0,0,pz1d>, <0,0,pz2d>, r4*2
translate<x4,y4,z4>
}
cylinder{
<0,0,pz1d>, <0,0,pz2d>, r5*2
translate<x5,y5,z5>
}
cylinder{
<0,0,pz1d>, <0,0,pz2d>, r6*2
translate<x6,y6,z6>
}
cylinder{
<0,0,pz1d>, <0,0,pz2d>, r7*2
translate<x7,y7,z7>
}
cylinder{
<0,0,pz1d>, <0,0,pz2d>, r8*2
translate<x8,y8,z8>
}
cylinder{
<0,0,pz1d>, <0,0,pz2d>, r9*2
translate<x9,y9,z9>
}
} // fin de la découpe de la développante --------------------------------
object {
decoupedeveloppante
rotate<0,0,-((pi/2)*2.3)*ad>
inverse
}
}
object {
developpante
}
// cercle de tete --------------------------------------------------------
cylinder{
<0,0,pz1d>, <0,0,pz2d>, da
inverse
}
}
#declare s=0;
#while (s<Z)
object {
dent
rotate<0,0,s*ad>
}
#declare s=s+1;
#end
// cylindre de base -------------------------------------------------------
#declare cyldb =
difference{
cylinder{
<0,0,pz1>, <0,0,pz2>, df
}
// cylindre alésage --------------------------------------------------------
cylinder{
<0,0,pz1d>, <0,0,pz2d>, 15
}
}
object {
cyldb
}
}
object {
engrenage
texture{TextureMetal}
rotate<0,0,360*clock>
translate<0,0,0>
}
#declare engrenage2 =
union{
object {
engrenage
texture{TextureMetal}
rotate<0,0,-360*clock>
translate<0,0,0>
}
rotate<0,0,ad>
translate<d*2,0,0>
}
object {
engrenage2
}