8 #ifndef IMPALGEBRA_CYLINDER_3D_H 
    9 #define IMPALGEBRA_CYLINDER_3D_H 
   17 #include <cereal/access.hpp> 
   21 IMPALGEBRA_BEGIN_NAMESPACE
 
   31   double get_radius()
 const { 
return radius_; }
 
   45   const Vector3D get_surface_point_at(
double relative_height, 
double angle);
 
   62   const Vector3D get_inner_point_at(
double relative_height,
 
   63                                     double relative_radius, 
double angle) 
const;
 
   71   friend class cereal::access;
 
   73   template<
class Archive> 
void serialize(Archive &ar) {
 
   79                             return 2.0 * 
PI * g.get_radius() *
 
   80                                        g.get_segment().get_length() +
 
   81                                    2.0 * 
PI * get_squared(g.get_radius()),
 
   82                             return PI * get_squared(g.get_radius()) *
 
   83                                    g.get_segment().get_length(),
 
   87 IMPALGEBRA_END_NAMESPACE
 
Base class for geometric types. 
 
#define IMP_SHOWABLE_INLINE(Name, how_to_show)
Declare the methods needed by an object that can be printed. 
 
static const double PI
the constant pi 
 
Represent a cylinder in 3D. 
 
Simple implementation of segments in 3D. 
 
Base class for geometric types. 
 
#define IMP_UNUSED(variable)
 
#define IMP_VOLUME_GEOMETRY_METHODS(Name, name, area, volume, bounding_box)
Implement the needed namespace methods for a geometry type. 
 
Various useful constants. 
 
Simple 3D rotation class. 
 
Simple implementation of segments in 3D. 
 
#define IMP_NOT_IMPLEMENTED
Use this to mark that the method is not implemented yet. 
 
DensityMap * get_segment(DensityMap *map_to_segment, int nx_start, int nx_end, int ny_start, int ny_end, int nz_start, int nz_end)
Get a segment of the map according to xyz indexes. 
 
Macros to help with objects that can be printed to a stream.