Moby
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
Moby::SSL Class Reference

A sphere-swept line (SSL) that optionally allows building an SSL tree. More...

#include <SSL.h>

Inheritance diagram for Moby::SSL:
Moby::BV

Public Member Functions

 SSL ()
 Initializes an empty SSL.
 
 SSL (const SSL &obb)
 
 SSL (const Point3d &p1, const Point3d &p2, double radius)
 Initializes a SSL from the given values.
 
 SSL (const SSL &s, const Ravelin::Vector3d &v)
 
SSLoperator= (const SSL &s)
 Copies one SSL to another.
 
virtual void transform (const Ravelin::Transform3d &T, BV *result) const
 Transforms the SSL using the given transform.
 
virtual BVPtr calc_swept_BV (CollisionGeometryPtr g, const Ravelin::SVelocityd &v) const
 Calculates the velocity-expanded bounding volume.
 
virtual bool intersects (const LineSeg3 &seg, double &tmin, double tmax, Point3d &q) const
 Determines whether a line segment intersects the bounding volume.
 
virtual bool outside (const Point3d &point, double tol=NEAR_ZERO) const
 Determines whether a point is outside the bounding volume.
 
boost::shared_ptr< SSLget_this ()
 
boost::shared_ptr< const SSLget_this () const
 
virtual std::ostream & to_vrml (std::ostream &out, const Ravelin::Pose3d &T) const
 Outputs the SSL to VRML (not yet implemented)
 
unsigned calc_size () const
 Calculates the size (number of elements in) a SSL tree.
 
virtual boost::shared_ptr
< const Ravelin::Pose3d > 
get_relative_pose () const
 Gets the associated pose for this bounding volume.
 
virtual Point3d get_lower_bounds () const
 Gets the lower bounds of the SSL.
 
virtual Point3d get_upper_bounds () const
 Gets the upper bounds of the SSL.
 
virtual double calc_volume () const
 Calculates (approximate?) volume of the SSL.
 
- Public Member Functions inherited from Moby::BV
BVPtr get_this ()
 
boost::shared_ptr< const BVget_this () const
 
bool is_leaf () const
 
template<class OutputIterator >
OutputIterator get_all_BVs (OutputIterator begin) const
 Gets all BV nodes. More...
 
template<class OutputIterator >
OutputIterator get_all_leafs (OutputIterator begin) const
 Gets all leaf nodes.
 
template<class OutputIterator >
OutputIterator get_all_BVs (OutputIterator begin) const
 Gets all BV nodes. More...
 
template<class OutputIterator >
OutputIterator get_all_leafs (OutputIterator begin) const
 Gets all leaf nodes.
 
template<class OutputIterator >
OutputIterator intersect_BV_trees (BVPtr a, BVPtr b, const Ravelin::Transform3d &aTb, const Ravelin::Transform3d &bTa, OutputIterator output_begin)
 Intersects two BV trees; returns list of all leaf-level intersecting BVs. More...
 

Static Public Member Functions

static double calc_dist (const SSL &o, const Point3d &p)
 Calculates the distance of the sphere-swept line from a point.
 
static double calc_dist (const SSL &a, const SSL &b, Point3d &cpa, Point3d &cpb)
 Calculates the distance between two sphere-swept lines and also calculates closest points.
 
static double calc_dist (const SSL &a, const SSL &b, const Ravelin::Transform3d &aTb, Point3d &cpa, Point3d &cpb)
 
static bool intersects (const SSL &a, const SSL &b)
 Determines whether two SSLs intersect.
 
static bool intersects (const SSL &a, const SSL &b, const Ravelin::Transform3d &aTb)
 
static bool intersects (const SSL &a, const LineSeg3 &seg, double &tmin, double tmax, Point3d &q)
 Determines whether (and when) a line segment intersects with the SSL.
 
static bool outside (const SSL &a, const Point3d &point, double tol=NEAR_ZERO)
 Determines whether a point is outside the SSL.
 
- Static Public Member Functions inherited from Moby::BV
static bool intersects (BVPtr a, BVPtr b)
 Convenience method.
 
static bool intersects (BVPtr a, BVPtr b, const Ravelin::Transform3d &T)
 Convenience method.
 
static double calc_distance (BVPtr a, BVPtr b, Point3d &cp1, Point3d &cp2)
 Convenience method.
 
static double calc_distance (BVPtr a, BVPtr b, const Ravelin::Transform3d &aTb, Point3d &cp1, Point3d &cp2)
 Convenience method.
 
static bool intersects (const BV *a, const BV *b)
 Computes whether two abstract bounding volumes intersect.
 
static bool intersects (const BV *a, const BV *b, const Ravelin::Transform3d &T)
 
static double calc_distance (const BV *a, const BV *b, Point3d &cp1, Point3d &cp2)
 Computes the distance between two abstract bounding volumes and stores the closest points. More...
 
static double calc_distance (const BV *a, const BV *b, const Ravelin::Transform3d &aTb, Point3d &cp1, Point3d &cp2)
 
template<class OutputIterator >
static OutputIterator intersect_BV_trees (BVPtr a, BVPtr b, const Ravelin::Transform3d &aTb, const Ravelin::Transform3d &bTa, OutputIterator output_begin)
 Intersects two BV trees; returns list of all leaf-level intersecting BVs. More...
 

Public Attributes

Point3d p1
 The first point of the line segment.
 
Point3d p2
 The second point of the line segment.
 
double radius
 Radius of the spherical addition.
 
- Public Attributes inherited from Moby::BV
boost::shared_ptr< void > userdata
 Userdata for the BV.
 
CollisionGeometryPtr geom
 The collision geometry associated with this bounding volume.
 
std::list< BVPtrchildren
 The children of this BV.
 

Detailed Description

A sphere-swept line (SSL) that optionally allows building an SSL tree.


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