GranOO  3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
GranOO3::Shape::Volume Class Referenceabstract

#include <Volume.hpp>

Inheritance diagram for GranOO3::Shape::Volume:
Inheritance graph
[legend]

Public Member Functions

 Volume (const Geom::Frame &frame)
 
virtual ~Volume ()
 
virtual double get_volume () const =0
 
virtual void compute_inertia_tensor (double density, Geom::Tensor &) const =0
 
virtual Geom::Point farthest_point_along (const Geom::Vector &dir) const =0
 
bool is_surface () const
 
bool is_volume () const
 
const Boxget_bounding_box () const
 
const Sphereget_bounding_sphere () const
 
Boxget_bounding_box ()
 
Sphereget_bounding_sphere ()
 
virtual double get_greatest_dimension () const =0
 
virtual void update_bounding_box ()=0
 
virtual void update_bounding_sphere ()=0
 
void update_bounding_shape ()
 
bool is_bounding_shape () const
 
virtual AABB aabb () const =0
 
template<Interference T>
bool overlap (const Sphere &, Geom::Vector &normal, double &penetration) const
 
virtual Interference locate (const Geom::Point &) const =0
 
virtual Interference locate (const Geom::Point &, double radius) const =0
 
Interference locate (const Sphere &) const
 
virtual bool collide_inside (const Geom::Point &p1, double radius, Collision::Data &info) const =0
 
virtual bool collide_outside (const Geom::Point &p1, double radius, Collision::Data &info) const =0
 
bool collide_inside (const Geom::Point &, Collision::Data &) const
 
bool collide_outside (const Geom::Point &, Collision::Data &) const
 
virtual bool collide (const Volume &, Collision::Data &) const =0
 
virtual bool collide (const Sphere &, Collision::Data &) const =0
 
virtual bool collide (const Box &, Collision::Data &) const =0
 
virtual bool collide (const Cylinder &, Collision::Data &) const =0
 
virtual bool collide (const Cone &, Collision::Data &) const =0
 
virtual bool collide (const ConeTruncated &, Collision::Data &) const =0
 
virtual bool collide (const Polyhedron &, Collision::Data &) const =0
 
const std::set< std::string > & get_face_ID () const
 
template<>
bool overlap (const Sphere &s, Geom::Vector &normal, double &penetration) const
 
template<>
bool overlap (const Sphere &s, Geom::Vector &normal, double &penetration) const
 
template<>
bool overlap (const Sphere &s, Geom::Vector &normal, double &penetration) const
 
- Public Member Functions inherited from GranOO3::Shape::Base
 Base (const Geom::Frame &frame)
 
virtual ~Base ()
 
virtual void draw_gl () const =0
 
virtual void draw_gl_edge () const
 
virtual void scale (double)=0
 
void unscale (double)
 
virtual void add_glob (const std::string &)=0
 
virtual void read_xml_element (const TiXmlElement *el)
 
virtual std::ostream & write_ascii (std::ostream &out) const
 
virtual std::istream & read_ascii (std::istream &in)
 
virtual void to_vtk (vtkUnstructuredGrid *data)
 
virtual std::string info () const
 
virtual std::ostream & to_povray (std::ostream &out, const Core::Color &) const
 
const Geom::Framelocal_frame () const
 
const Geom::Pointget_center () const
 
const Geom::Quaternionget_quaternion () const
 
const Geom::Vectorget_position () const
 
void translate (Geom::Vector &)
 
void rotate (const Geom::Vector &axis, const double angleRadian)
 

Static Public Member Functions

static std::string class_ID ()
 
- Static Public Member Functions inherited from GranOO3::Shape::Base
static Baseglob (const std::string &id)
 
static const Geom::Frameframe_buffer ()
 
static std::string class_ID ()
 
static Basenew_object (const TiXmlElement *el)
 

Protected Member Functions

template<typename T , typename ... Args>
void set_face_ID (const T &, Args... args)
 
template<typename T >
void set_face_ID (const T &)
 
void copy_face_ID (const std::set< std::string > &)
 
void add_face_ID (const std::string &)
 

Private Member Functions

 Volume (const Volume &)
 
Volumeoperator= (const Volume &)
 
template<class Archive >
void save (Archive &, const unsigned int) const
 
template<class Archive >
void load (Archive &, const unsigned int)
 
 BOOST_SERIALIZATION_SPLIT_MEMBER ()
 

Private Attributes

Box_bounding_box
 
Sphere_bounding_sphere
 
bool _bounding_shape
 
double _bounding_radius
 
std::set< std::string > _face
 

Friends

class boost::serialization::access
 

Additional Inherited Members

- Protected Attributes inherited from GranOO3::Shape::Base
const Geom::Frame_frame
 

Constructor & Destructor Documentation

◆ Volume() [1/2]

GranOO3::Shape::Volume::Volume ( const Geom::Frame frame)
explicit

◆ ~Volume()

GranOO3::Shape::Volume::~Volume ( )
virtual

◆ Volume() [2/2]

GranOO3::Shape::Volume::Volume ( const Volume )
private

Member Function Documentation

◆ aabb()

virtual AABB GranOO3::Shape::Volume::aabb ( ) const
pure virtual

◆ add_face_ID()

void GranOO3::Shape::Volume::add_face_ID ( const std::string &  name)
inlineprotected

◆ BOOST_SERIALIZATION_SPLIT_MEMBER()

GranOO3::Shape::Volume::BOOST_SERIALIZATION_SPLIT_MEMBER ( )
private

◆ class_ID()

static std::string GranOO3::Shape::Volume::class_ID ( )
inlinestatic

◆ collide() [1/7]

virtual bool GranOO3::Shape::Volume::collide ( const Box ,
Collision::Data  
) const
pure virtual

◆ collide() [2/7]

virtual bool GranOO3::Shape::Volume::collide ( const Cone ,
Collision::Data  
) const
pure virtual

◆ collide() [3/7]

virtual bool GranOO3::Shape::Volume::collide ( const ConeTruncated ,
Collision::Data  
) const
pure virtual

◆ collide() [4/7]

virtual bool GranOO3::Shape::Volume::collide ( const Cylinder ,
Collision::Data  
) const
pure virtual

◆ collide() [5/7]

virtual bool GranOO3::Shape::Volume::collide ( const Polyhedron ,
Collision::Data  
) const
pure virtual

◆ collide() [6/7]

virtual bool GranOO3::Shape::Volume::collide ( const Sphere ,
Collision::Data  
) const
pure virtual

◆ collide() [7/7]

virtual bool GranOO3::Shape::Volume::collide ( const Volume ,
Collision::Data  
) const
pure virtual

◆ collide_inside() [1/2]

bool GranOO3::Shape::Volume::collide_inside ( const Geom::Point p,
Collision::Data info 
) const

◆ collide_inside() [2/2]

virtual bool GranOO3::Shape::Volume::collide_inside ( const Geom::Point p1,
double  radius,
Collision::Data info 
) const
pure virtual

◆ collide_outside() [1/2]

bool GranOO3::Shape::Volume::collide_outside ( const Geom::Point p,
Collision::Data info 
) const

◆ collide_outside() [2/2]

virtual bool GranOO3::Shape::Volume::collide_outside ( const Geom::Point p1,
double  radius,
Collision::Data info 
) const
pure virtual

◆ compute_inertia_tensor()

virtual void GranOO3::Shape::Volume::compute_inertia_tensor ( double  density,
Geom::Tensor  
) const
pure virtual

◆ copy_face_ID()

void GranOO3::Shape::Volume::copy_face_ID ( const std::set< std::string > &  set)
inlineprotected

◆ farthest_point_along()

virtual Geom::Point GranOO3::Shape::Volume::farthest_point_along ( const Geom::Vector dir) const
pure virtual

◆ get_bounding_box() [1/2]

Box & GranOO3::Shape::Volume::get_bounding_box ( )

◆ get_bounding_box() [2/2]

const Box & GranOO3::Shape::Volume::get_bounding_box ( ) const

◆ get_bounding_sphere() [1/2]

Sphere & GranOO3::Shape::Volume::get_bounding_sphere ( )

◆ get_bounding_sphere() [2/2]

const Sphere & GranOO3::Shape::Volume::get_bounding_sphere ( ) const

◆ get_face_ID()

const std::set< std::string > & GranOO3::Shape::Volume::get_face_ID ( ) const
inline

◆ get_greatest_dimension()

virtual double GranOO3::Shape::Volume::get_greatest_dimension ( ) const
pure virtual

◆ get_volume()

virtual double GranOO3::Shape::Volume::get_volume ( ) const
pure virtual

◆ is_bounding_shape()

bool GranOO3::Shape::Volume::is_bounding_shape ( ) const
inline

◆ is_surface()

bool GranOO3::Shape::Volume::is_surface ( ) const
inlinevirtual

Implements GranOO3::Shape::Base.

◆ is_volume()

bool GranOO3::Shape::Volume::is_volume ( ) const
inlinevirtual

Implements GranOO3::Shape::Base.

◆ load()

template<class Archive >
void GranOO3::Shape::Volume::load ( Archive &  ar,
const unsigned int   
)
inlineprivate

◆ locate() [1/3]

virtual Interference GranOO3::Shape::Volume::locate ( const Geom::Point ) const
pure virtual

◆ locate() [2/3]

virtual Interference GranOO3::Shape::Volume::locate ( const Geom::Point ,
double  radius 
) const
pure virtual

◆ locate() [3/3]

Interference GranOO3::Shape::Volume::locate ( const Sphere s) const

◆ operator=()

Volume& GranOO3::Shape::Volume::operator= ( const Volume )
private

◆ overlap() [1/4]

template<Interference T>
bool GranOO3::Shape::Volume::overlap ( const Sphere ,
Geom::Vector normal,
double &  penetration 
) const

◆ overlap() [2/4]

template<>
bool GranOO3::Shape::Volume::overlap ( const Sphere s,
Geom::Vector normal,
double &  penetration 
) const

◆ overlap() [3/4]

template<>
bool GranOO3::Shape::Volume::overlap ( const Sphere s,
Geom::Vector normal,
double &  penetration 
) const

◆ overlap() [4/4]

template<>
bool GranOO3::Shape::Volume::overlap ( const Sphere s,
Geom::Vector normal,
double &  penetration 
) const

◆ save()

template<class Archive >
void GranOO3::Shape::Volume::save ( Archive &  ar,
const unsigned int   
) const
inlineprivate

◆ set_face_ID() [1/2]

template<typename T >
void GranOO3::Shape::Volume::set_face_ID ( const T &  key)
inlineprotected

◆ set_face_ID() [2/2]

template<typename T , typename ... Args>
void GranOO3::Shape::Volume::set_face_ID ( const T &  key,
Args...  args 
)
inlineprotected

◆ update_bounding_box()

virtual void GranOO3::Shape::Volume::update_bounding_box ( )
pure virtual

◆ update_bounding_shape()

void GranOO3::Shape::Volume::update_bounding_shape ( )

◆ update_bounding_sphere()

virtual void GranOO3::Shape::Volume::update_bounding_sphere ( )
pure virtual

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

Member Data Documentation

◆ _bounding_box

Box* GranOO3::Shape::Volume::_bounding_box
private

◆ _bounding_radius

double GranOO3::Shape::Volume::_bounding_radius
private

◆ _bounding_shape

bool GranOO3::Shape::Volume::_bounding_shape
private

◆ _bounding_sphere

Sphere* GranOO3::Shape::Volume::_bounding_sphere
private

◆ _face

std::set<std::string> GranOO3::Shape::Volume::_face
private

The documentation for this class was generated from the following files: