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.