7 #ifndef _COLLISION_GEOMETRY_H 
    8 #define _COLLISION_GEOMETRY_H 
   14 #include <Ravelin/Pose3d.h> 
   15 #include <boost/foreach.hpp> 
   16 #include <boost/shared_ptr.hpp> 
   17 #include <boost/weak_ptr.hpp> 
   18 #include <Moby/Constants.h> 
   19 #include <Moby/Base.h> 
   20 #include <Moby/Triangle.h> 
   21 #include <Moby/Primitive.h> 
   38   friend class GeneralizedCCD;
 
   43     void write_vrml(
const std::string& filename) 
const;
 
   45     virtual void save_to_xml(
XMLTreePtr node, std::list<boost::shared_ptr<const Base> >& shared_objects) 
const;
 
   46     virtual void load_from_xml(boost::shared_ptr<const XMLTree> node, std::map<std::string, BasePtr>& id_map);
 
   65     void set_parent(boost::weak_ptr<CollisionGeometry> parent) { _parent = parent; }
 
   68     boost::shared_ptr<const Ravelin::Pose3d> 
get_pose()
 const { 
return _F; }
 
   71     boost::shared_ptr<Ravelin::SingleBodyd> 
get_single_body()
 const { 
return (_single_body.expired()) ? boost::shared_ptr<Ravelin::SingleBodyd>() : boost::shared_ptr<Ravelin::SingleBodyd>(_single_body); }
 
   78     boost::shared_ptr<Ravelin::Pose3d> 
_F;
 
   84     boost::weak_ptr<Ravelin::SingleBodyd> _single_body;
 
   85     boost::weak_ptr<CollisionGeometry> _parent;
 
boost::shared_ptr< Primitive > PrimitivePtr
Primitive smart pointer. 
Definition: Types.h:80
void get_vertices(std::vector< Point3d > &p) const 
Gets vertices for a primitive. 
Definition: CollisionGeometry.cpp:113
double get_farthest_point_distance() const 
Gets the farthest point from this geometry. 
Definition: CollisionGeometry.cpp:53
boost::shared_ptr< Ravelin::Pose3d > _F
The pose of the CollisionGeometry (relative to the rigid body) 
Definition: CollisionGeometry.h:78
Class from which all Moby classes are derived. 
Definition: Base.h:20
boost::shared_ptr< Ravelin::SingleBodyd > get_single_body() const 
Gets the single body associated with this CollisionGeometry (if any) 
Definition: CollisionGeometry.h:71
void set_relative_pose(const Ravelin::Pose3d &pose)
Sets the relative pose of this geometry. 
Definition: CollisionGeometry.cpp:193
CollisionGeometryPtr get_this()
Gets the shared pointer for this. 
Definition: CollisionGeometry.h:59
double calc_dist_and_normal(const Point3d &p, std::vector< Ravelin::Vector3d > &n) const 
Calculates the (unsigned) distance of a point from this collision geometry. 
Definition: CollisionGeometry.cpp:204
Point3d get_supporting_point(const Ravelin::Vector3d &d) const 
Gets a supporting point for this geometry in a particular direction. 
Definition: CollisionGeometry.cpp:33
void set_parent(boost::weak_ptr< CollisionGeometry > parent)
Sets the parent of this CollisionGeometry (or NULL to indicate no parent) 
Definition: CollisionGeometry.h:65
boost::shared_ptr< CollisionGeometry > CollisionGeometryPtr
Collision geometry smart pointer. 
Definition: Types.h:77
Defines collision geometry that may be used (in principle) many ways: for rigid bodies, non-rigid bodies, ... 
Definition: CollisionGeometry.h:36
boost::shared_ptr< XMLTree > XMLTreePtr
XML tree smart pointer. 
Definition: Types.h:104
void write_vrml(const std::string &filename) const 
Writes the collision geometry mesh to the specified VRML file. 
Definition: CollisionGeometry.cpp:134
boost::shared_ptr< const Ravelin::Pose3d > get_pose() const 
Gets the relative transform for this CollisionGeometry. 
Definition: CollisionGeometry.h:68
CollisionGeometry()
Constructs a CollisionGeometry with no triangle mesh, identity transformation and relative transforma...
Definition: CollisionGeometry.cpp:26
Ravelin::Vector3d Point3d
Typedef to distinguish between a 3D vector and a point. 
Definition: Types.h:47
PrimitivePtr _geometry
The underlying geometry. 
Definition: CollisionGeometry.h:81
double compliant_layer_depth
The compliant layer around this geometry. 
Definition: CollisionGeometry.h:56
virtual void load_from_xml(boost::shared_ptr< const XMLTree > node, std::map< std::string, BasePtr > &id_map)
Implements Base::load_from_xml() 
Definition: CollisionGeometry.cpp:315
virtual void save_to_xml(XMLTreePtr node, std::list< boost::shared_ptr< const Base > > &shared_objects) const 
Implements Base::save_to_xml() 
Definition: CollisionGeometry.cpp:370
PrimitivePtr get_geometry() const 
Gets the geometry for this primitive. 
Definition: CollisionGeometry.h:74
void set_single_body(boost::shared_ptr< Ravelin::SingleBodyd > s)
Sets the single body associated with this CollisionGeometry. 
Definition: CollisionGeometry.cpp:72
static double calc_signed_dist(CollisionGeometryPtr a, CollisionGeometryPtr b, Point3d &cpa, Point3d &cpb)
Calculates the signed distances between two geometries and returns closest points if geometries are n...
Definition: CollisionGeometry.cpp:237
boost::shared_ptr< CollisionGeometry > get_parent() const 
Gets the parent of this CollisionGeometry (or NULL if there is no parent) 
Definition: CollisionGeometry.h:62
PrimitivePtr set_geometry(PrimitivePtr primitive)
Sets the collision geometry via a primitive. 
Definition: CollisionGeometry.cpp:86