Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
    POV-Ray Beispiele - Die Erstellung von Objekten für POV-Ray
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorial

  - POV-Ray Beispiele
    Inhaltsübersicht
  - Geometrie
    - Bauern-Figur
    - Drahtgittter-Würfel
    - Oktagon
    - Eiform
    - Star - Stern
    - Optische Linse
    - Schachbrett
    - Rundkolben-Form
    - Erlenmeyerkolben-Form
    - Zwei-Zylinder-Blob
    - Regulärer Tetraeder
    - Penrose-Dreieck
    - Yin & Yang
    - Fischblasen
    - 3fach Fischblasen
    - Dreipass
  - Architektur
  - Technik
                                               
 
Two-Cylinder-Blob

Zwei verschmelzende Zylinder
- ein Zwei-Zylinder-Blob

Die Konstruktion der Form von zwei Zylindern, welche scheinbar zusammenschmelzen -
eine Kombination zweier Zylinder mit einer grundeten Hohlkehle dazwischen.

Objekte:   "box", "cylinder".
Methoden: "#declare","union", "intersection" "#macro".
Klicken Sie hier für ein Beispiel!

Die Konstruktion zweier verschmelzender Zylinder.
Ein Querschnitt mit der Geometrie dieser Konstruktion zeigt das nebenstehende Bild.
( Für mehr Details zur elementaren Geometrie
  siehe hier: Tangierende Kreise.)

//---------------------------------------
#macro Two_Cylinder_Blob_0(
           Pitch, // distance of centers
           SD,    // slice thickness in z
           Cyl_R, // cylinder radius
           Fillet_R , // fillet radius
           Axis_R, // <Cyl_R, 0=non
        ) //-----------------------------
//---------------------------------------
#local D = 0.00001; // a little bit
// distance of fillet from centerline
// of right and left cylinder:
#local Fillet_Y  =
  sqrt( pow(Fillet_R+Cyl_R,2)
  - pow(Pitch/2,2));
// S = tangent point of the cylinders!
// proportional!
#local S_X =
 Fillet_R/(Cyl_R + Fillet_R)*Pitch;
#local S_Y =
Cyl_R/(Cyl_R + Fillet_R)*Fillet_Y;
//---------------------------------------
#if (Axis_R > 0)
difference{
#end //----------------------------------
union{
 cylinder{ <0,0,-SD/2>,<0,0,SD/2>,Cyl_R
           translate< Pitch/2,0,0>}
 cylinder{ <0,0,-SD/2>,<0,0,SD/2>,Cyl_R
           translate<-Pitch/2,0,0>}
 difference{ // 2
  box{<-S_X,-S_Y,-SD/2>,<S_X,S_Y,SD/2> }
  cylinder{ <0,0,-SD/2-D>,
            <0,0,SD/2+D>, Fillet_R
            translate<0, Fillet_Y,0>}
  cylinder{ <0,0,-SD/2-D>,
            <0,0,SD/2+D>, Fillet_R
            translate<0,-Fillet_Y,0>}
 } // end difference 2
} // end union -------------------------
#if (Axis_R > 0)
cylinder{<0,0,-SD-D>,<0,0,SD/2+D>,Axis_R
         translate< Pitch/2,0,0>}
cylinder{<0,0,-SD-D>,<0,0,SD/2+D>,Axis_R
         translate<-Pitch/2,0,0>}
} // end of difference or union
#end // of 'Axis_R > 0'
#end //--------------------- end of macro
//---------------------------------------

// example://----------------------------
object{ Two_Cylinder_Blob_0 (
          0.0127, // Pitch distance
          0.0009, // slice thickness
          0.0051, // cylinder radius
          0.0081, // fillet radius
          0.0022, // axis r,
           //< cylinder r, 0=non
         )//-----------------------------
        texture{
           pigment{ color rgb<1,1,1>}
           finish { phong 1.0}
        } // end of texture
        rotate<0,0,0>
        translate<0,0,0>
      } // end of sphere ----------------
//---------------------------------------
Zwei zusammenschmelzende Zylinder
- Two-Cylinder-Blob.

Die Verwendung von Round_Cylinder und Torus-Segmenten
für die gerundeten Kanten vervollständigen die Konstruktion zum
object{Two_Cylinder_Blob_1( ...)}


Diese Form in einem Makro als ein
gebrauchsferiges Objekt: Two_Cylinder_Blob_1.inc



Wozu taugt das?
Hier ein Beispiel:

Kettenglied einer Fahrradkette

Eine Anwendung dieses Macros als ein
gebrauchsferiges Objekt: Bike_Chain_Link.inc

 

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