// OiBSurfCylinder.cpp #include "OiBSurfCylinder.h" #include #include "trfcyl/BSurfCylinder.h" #include "Inventor/nodes/SoSeparator.h" #include "oiext/SoPolyTube.hpp" //********************************************************************** // Class initialization. void OiBSurfCylinder::init_class() const { SoPolyTube::initClass(); } //********************************************************************** // Generate OI representation. SoNode* OiBSurfCylinder:: generate_representation(const Surface& srf, const OiSurfaceTraits traits) const { assert( srf.get_type() == BSurfCylinder::get_static_type() ); const BSurfCylinder& pscy = dynamic_cast(srf); double r = pscy.get_radius(); double zmin = pscy.get_zmin(); double zmax = pscy.get_zmax(); double z0 = 0.5*(zmin+zmax); double zlen = zmax - zmin; assert( z0 == 0.0 ); assert( zlen > 0.0 ); int nside = traits.nside; int ispace = traits.ispace; SoPolyTube* psobj = new SoPolyTube(nside,r,zlen,ispace); return psobj; } //**********************************************************************