Geometrische Körper aus meiner Include-Datei "shapes3.inc"
( ehemals "shapes_lo.inc"):
Egg>, Ei-Objekt
|
Egg_Shape, eiförmiges Objekt
|
Syntax:
object{ Egg
texture{ ... }
scale 1
rotate <0,0,0>
translate < 0, 0, 0>
} // end of object ---- |
|
Syntax:
object{ Egg_Shape( Lower_Scale,
Upper_Scale
) //----------
texture{ ... ... }
} // end of object ------ |
Lower_Scale =
y-Maßstab der unteren Objekthälfte,
Upper_Scale =
y-Maßstab der oberen Objekthälfte.
Die Gesamthöhe des Objekts ist auf 2 Einheiten skaliert.
|
Beispiel:
#include "shapes3.inc"
object{ Egg // = Egg_Shape(1.15,1.55)
texture{
pigment{ color rgb<1,1,1>}
normal { bumps 0.5 scale .002}
finish { phong 0.5 }
} // end of texture
rotate < 0, 0, 0>
translate < 0, 0, 0>
} // end of object -------------------- |
|
Beispiel:
#include "shapes3.inc"
object{ Egg_Shape( 2.05, 0.65 )
texture{
pigment{ color rgb<1,1,1>}
normal { bumps 0.5 scale .002}
finish { phong 1 }
} // end of texture
rotate < 0, 0, 0>
translate < 0, 0, 0>
} // end of object --------------------- |
|
Einige Variationen dieses Makro-Objektes:
|
|
"Egg object"
|
"Egg object"
|
Das Makro im Detail:
Dieses Makro verwendet eine Vereinigungsmenge (union) von zwei
durch Schnitt von geeignet skalierten Kugeln und Quadern erzeugte Ellipsoid-Hälften:
// -------------------------------------- macro Egg_Shape (...)
#macro Egg_Shape (Lower_Scale, Upper_Scale) //
// ------------------------------------------------------------
#local Egg_Lower_Part =
difference {
sphere{<0,0,0>,1 scale<1,Lower_Scale,1>}
box{<-1,0,-1>,<1,Lower_Scale,1>}
} //---------------------------------------
#local Egg_Upper_Part =
difference {
sphere {<0,0,0>,1 scale<1,Upper_Scale,1>}
box {<-1,-Upper_Scale,-1>,<1,0,1>}
}//---------------------------------------
//-------------------------------------------------------------
union {
object {Egg_Upper_Part}
object {Egg_Lower_Part}
translate<0,Lower_Scale,0>
scale 2/(Lower_Scale+Upper_Scale)
} // end of union -------------------------------------
#end //---------------------------------- end of the egg macro |
Das Ei-Objekt wird durch feste Skalierung mit demselben Makro erzeugt, wobei Lower_Scale = 1.15 und Upper_Scale = 1.55:
// ---------------------------- shape of a simple egg
#declare Egg = object { Egg_Shape (1.15,1.55)}
// ------------------------------------- end of the egg object |
|
|