DOLFIN
DOLFIN C++ interface
Classes | Protected Member Functions | List of all members
dolfin::BoundingBoxTree3D Class Reference

Specialization of bounding box implementation to 3D. More...

#include <BoundingBoxTree3D.h>

Inheritance diagram for dolfin::BoundingBoxTree3D:
Inheritance graph
[legend]
Collaboration diagram for dolfin::BoundingBoxTree3D:
Collaboration graph
[legend]

Classes

struct  less_x_bbox
 Comparison operators for sorting of bounding boxes. More...
 
struct  less_y_bbox
 Less than operator in y-direction. More...
 
struct  less_z_bbox
 Less than operator in z-direction. More...
 

Protected Member Functions

std::size_t gdim () const
 Return geometric dimension.
 
const double * get_bbox_coordinates (unsigned int node) const
 Return bounding box coordinates for node.
 
bool point_in_bbox (const double *x, const unsigned int node) const
 Check whether point (x) is in bounding box (node)
 
bool bbox_in_bbox (const double *a, unsigned int node) const
 Check whether bounding box (a) collides with bounding box (node)
 
double compute_squared_distance_bbox (const double *x, unsigned int node) const
 Compute squared distance between point and bounding box.
 
double compute_squared_distance_point (const double *x, unsigned int node) const
 Compute squared distance between point and point.
 
void compute_bbox_of_bboxes (double *bbox, std::size_t &axis, const std::vector< double > &leaf_bboxes, const std::vector< unsigned int >::iterator &begin, const std::vector< unsigned int >::iterator &end)
 Compute bounding box of bounding boxes.
 
void compute_bbox_of_points (double *bbox, std::size_t &axis, const std::vector< Point > &points, const std::vector< unsigned int >::iterator &begin, const std::vector< unsigned int >::iterator &end)
 Compute bounding box of points.
 
void sort_bboxes (std::size_t axis, const std::vector< double > &leaf_bboxes, const std::vector< unsigned int >::iterator &begin, const std::vector< unsigned int >::iterator &middle, const std::vector< unsigned int >::iterator &end)
 Sort leaf bounding boxes along given axis.
 
- Protected Member Functions inherited from dolfin::GenericBoundingBoxTree
void clear ()
 Clear existing data if any.
 
unsigned int _build (const std::vector< double > &leaf_bboxes, const std::vector< unsigned int >::iterator &begin, const std::vector< unsigned int >::iterator &end, std::size_t gdim)
 Build bounding box tree for entities (recursive)
 
unsigned int _build (const std::vector< Point > &points, const std::vector< unsigned int >::iterator &begin, const std::vector< unsigned int >::iterator &end, std::size_t gdim)
 Build bounding box tree for points (recursive)
 
void build_point_search_tree (const Mesh &mesh) const
 Compute point search tree if not already done.
 
void compute_bbox_of_entity (double *b, const MeshEntity &entity, std::size_t gdim) const
 Compute bounding box of mesh entity.
 
void sort_points (std::size_t axis, const std::vector< Point > &points, const std::vector< unsigned int >::iterator &begin, const std::vector< unsigned int >::iterator &middle, const std::vector< unsigned int >::iterator &end)
 Sort points along given axis.
 
unsigned int add_bbox (const BBox &bbox, const double *b, std::size_t gdim)
 Add bounding box and coordinates.
 
const BBoxget_bbox (unsigned int node) const
 Return bounding box for given node.
 
unsigned int num_bboxes () const
 Return number of bounding boxes.
 
unsigned int add_point (const BBox &bbox, const Point &point, std::size_t gdim)
 Add bounding box and point coordinates.
 
bool is_leaf (const BBox &bbox, unsigned int node) const
 Check whether bounding box is a leaf node.
 
void tree_print (std::stringstream &s, unsigned int i)
 Print out recursively, for debugging.
 

Additional Inherited Members

- Public Member Functions inherited from dolfin::GenericBoundingBoxTree
 GenericBoundingBoxTree ()
 Constructor.
 
virtual ~GenericBoundingBoxTree ()
 Destructor.
 
void build (const Mesh &mesh, std::size_t tdim)
 Build bounding box tree for mesh entities of given dimension.
 
void build (const std::vector< Point > &points)
 Build bounding box tree for point cloud.
 
std::vector< unsigned int > compute_collisions (const Point &point) const
 Compute all collisions between bounding boxes and Point
 
std::pair< std::vector< unsigned int >, std::vector< unsigned int > > compute_collisions (const GenericBoundingBoxTree &tree) const
 Compute all collisions between bounding boxes and BoundingBoxTree
 
std::vector< unsigned int > compute_entity_collisions (const Point &point, const Mesh &mesh) const
 Compute all collisions between entities and Point
 
std::vector< unsigned int > compute_process_collisions (const Point &point) const
 Compute all collisions between processes and Point
 
std::pair< std::vector< unsigned int >, std::vector< unsigned int > > compute_entity_collisions (const GenericBoundingBoxTree &tree, const Mesh &mesh_A, const Mesh &mesh_B) const
 Compute all collisions between entities and BoundingBoxTree
 
unsigned int compute_first_collision (const Point &point) const
 Compute first collision between bounding boxes and Point
 
unsigned int compute_first_entity_collision (const Point &point, const Mesh &mesh) const
 Compute first collision between entities and Point
 
std::pair< unsigned int, double > compute_closest_entity (const Point &point, const Mesh &mesh) const
 Compute closest entity and distance to Point
 
std::pair< unsigned int, double > compute_closest_point (const Point &point) const
 Compute closest point and distance to Point
 
std::string str (bool verbose=false)
 Print out for debugging.
 
- Static Public Member Functions inherited from dolfin::GenericBoundingBoxTree
static std::shared_ptr< GenericBoundingBoxTreecreate (unsigned int dim)
 Factory function returning (empty) tree of appropriate dimension.
 
- Static Protected Member Functions inherited from dolfin::GenericBoundingBoxTree
static void _compute_collisions (const GenericBoundingBoxTree &tree, const Point &point, unsigned int node, std::vector< unsigned int > &entities, const Mesh *mesh)
 
static void _compute_collisions (const GenericBoundingBoxTree &A, const GenericBoundingBoxTree &B, unsigned int node_A, unsigned int node_B, std::vector< unsigned int > &entities_A, std::vector< unsigned int > &entities_B, const Mesh *mesh_A, const Mesh *mesh_B)
 
static unsigned int _compute_first_collision (const GenericBoundingBoxTree &tree, const Point &point, unsigned int node)
 
static unsigned int _compute_first_entity_collision (const GenericBoundingBoxTree &tree, const Point &point, unsigned int node, const Mesh &mesh)
 
static void _compute_closest_entity (const GenericBoundingBoxTree &tree, const Point &point, unsigned int node, const Mesh &mesh, unsigned int &closest_entity, double &R2)
 
static void _compute_closest_point (const GenericBoundingBoxTree &tree, const Point &point, unsigned int node, unsigned int &closest_point, double &R2)
 
- Protected Attributes inherited from dolfin::GenericBoundingBoxTree
std::size_t _tdim
 Topological dimension of leaf entities.
 
std::vector< BBox_bboxes
 List of bounding boxes (parent-child-entity relations)
 
std::vector< double > _bbox_coordinates
 List of bounding box coordinates.
 
std::shared_ptr< GenericBoundingBoxTree_point_search_tree
 Point search tree used to accelerate distance queries.
 
std::shared_ptr< GenericBoundingBoxTree_global_tree
 Global tree for mesh ownership of each process (same on all processes)
 

Detailed Description

Specialization of bounding box implementation to 3D.


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