// POV-Ray 3.6 / 3.7 include file "Rounded_BarrelRoof_Rtop.inc" // author: Friedrich A, Lohmueller, Aug-2016 // homepage: www.f-lohmueller.de/ //------------------------------------------------------------------------ #ifndef( Rounded_BarrelRoof_Rtop_Inc_Temp) #declare Rounded_BarrelRoof_Rtop_Inc_Temp = version; #version 3.6; #ifndef ( Shapes3_Inc_Temp ) #include "shapes3.inc" #end //------------------------------------------------------------------------------ ///////// //------------------------------------------------------------------------------ ///////// #macro Rounded_BarrelRoof_Rtop( HalfWidth_X, // half width in x R_Top, // top radius R_Border, // border radius Depth_Z, // depth in z Merge__On, // ) // -------------------------- //--------------------------------------------------- #local D = 0.00001 ; #if (R_Border >= R_Top ) #error "Rounded_BarrelRoof_Rtop() macro called with 'R_Border' >= 'R_Top' that can't be handled correctly" #end #local HW_X = HalfWidth_X; #local R_i = R_Top - R_Border; #local HW_i = HW_X - R_Border; // // declared by applying this macro: #declare Roof_Angle = degrees( asin( HW_i/R_i )); #declare H_Circle = R_i * cos( radians(Roof_Angle)); #declare H_Y = R_Top - H_Circle; // //--------------------------------------------------------------------- #if (Merge__On = 1)// 1 merge{ #else union{ #end intersection{ // 1 box{<-HW_X,0,-D>, } //#macro Segment_of_CylinderRing ( R_out, R_in, Height, Segment_Angle) object{ Segment_of_CylinderRing ( R_Top, D, Depth_Z , -2*Roof_Angle ) scale <1,-1,1> rotate<-90,0,90-Roof_Angle> translate<0,-H_Circle,0> }//---------------------------------------------------------- } // end intersection 1 --------------------------------------------- ///////// intersection{ // 2 box{<-HW_X,-D,-D>, } #if (Merge__On = 1) // 2 merge{ #else union{ #end cylinder{ <0,0,D>,<0,0,Depth_Z >,R_Border translate<-HW_i,0,0> } // end of cylinder ------------------------------------ cylinder{ <0,0,D>,<0,0,Depth_Z >,R_Border translate< HW_i,0,0> } // end of cylinder ------------------------------------ } // end union/merge 2 } // end intersection 2 --------------------------------------------- ///////// }// end union/merge 1 // ------------------------------------------------------------------------------ ///////// #end// of macro ------------------------------------------------------------// end of macro //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- // sample: /* //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- #include "Rounded_BarrelRoof_Rtop.inc" //-------------------------------------------------------------------------------------// object{ Rounded_BarrelRoof_Rtop( 1.40, // HalfWidth_X, HalbeBreite_X 2.50, // R_Top, // 0.50, // R_Border, // Rand Radius 0.50, // Depht_Z, Dicke_Z, // in Z 0, // Merge__On, ) //----------------------------------------------------------------// texture { Xyz_Texture } scale <1,1,1>*1 rotate<0,0,0> translate<0.00,0.00, 0.00>} //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- */ #version Rounded_BarrelRoof_Rtop_Inc_Temp; #end //------------------------------------------------------------------- end of include file