DOLFIN-X
DOLFIN-X C++ interface
Static Public Member Functions | List of all members
dolfinx::geometry::CollisionPredicates Class Reference

This class implements algorithms for detecting pairwise collisions between mesh entities of varying dimensions. More...

#include <CollisionPredicates.h>

Static Public Member Functions

static bool collides (const mesh::MeshEntity &entity, const Eigen::Vector3d &point)
 Check whether entity collides with point. More...
 
static bool collides (const mesh::MeshEntity &entity_0, const mesh::MeshEntity &entity_1)
 Check whether two entities collide. More...
 
static bool collides_segment_point (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &point, std::size_t gdim)
 Check whether segment p0-p1 collides with point.
 
static bool collides_segment_point_1d (double p0, double p1, double point)
 Check whether segment p0-p1 collides with point (1D version)
 
static bool collides_segment_point_2d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &point)
 Check whether segment p0-p1 collides with point (2D version)
 
static bool collides_segment_point_3d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &point)
 Check whether segment p0-p1 collides with point (3D version)
 
static bool collides_segment_segment (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1, std::size_t gdim)
 Check whether segment p0-p1 collides with segment q0-q1.
 
static bool collides_segment_segment_1d (double p0, double p1, double q0, double q1)
 Check whether segment p0-p1 collides with segment q0-q1 (1D version)
 
static bool collides_segment_segment_2d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1)
 Check whether segment p0-p1 collides with segment q0-q1 (2D version)
 
static bool collides_segment_segment_3d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1)
 Check whether segment p0-p1 collides with segment q0-q1 (3D version)
 
static bool collides_triangle_point (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &point, std::size_t gdim)
 Check whether triangle p0-p1-p2 collides with point.
 
static bool collides_triangle_point_2d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &point)
 Check whether triangle p0-p1-p2 collides with point (2D version)
 
static bool collides_quad_point_2d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &p3, const Eigen::Vector3d &point)
 Check whether quad p0-p1-p2-p3 collides with point (2D version)
 
static bool collides_triangle_point_3d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &point)
 Check whether triangle p0-p1-p2 collides with point (3D version)
 
static bool collides_triangle_segment (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1, std::size_t gdim)
 Check whether triangle p0-p1-p2 collides with segment q0-q1.
 
static bool collides_triangle_segment_2d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1)
 Check whether triangle p0-p1-p2 collides with segment q0-q1 (2D version)
 
static bool collides_triangle_segment_3d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1)
 Check whether triangle p0-p1-p2 collides with segment q0-q1 (3D version)
 
static bool collides_triangle_triangle (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1, const Eigen::Vector3d &q2, std::size_t gdim)
 Check whether triangle p0-p1-p2 collides with triangle q0-q1-q2.
 
static bool collides_triangle_triangle_2d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1, const Eigen::Vector3d &q2)
 Check whether triangle p0-p1-p2 collides with triangle q0-q1-q2 (2D version)
 
static bool collides_triangle_triangle_3d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1, const Eigen::Vector3d &q2)
 Check whether triangle p0-p1-p2 collides with triangle q0-q1-q2 (3D version)
 
static bool collides_tetrahedron_point_3d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &p3, const Eigen::Vector3d &point)
 Check whether tetrahedron p0-p1-p2-p3 collides with point.
 
static bool collides_tetrahedron_segment_3d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &p3, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1)
 Check whether tetrahedron p0-p1-p2-p3 collides with segment q0-q1.
 
static bool collides_tetrahedron_triangle_3d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &p3, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1, const Eigen::Vector3d &q2)
 Check whether tetrahedron p0-p1-p2-p3 collides with triangle q0-q1-q2.
 
static bool collides_tetrahedron_tetrahedron_3d (const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &p3, const Eigen::Vector3d &q0, const Eigen::Vector3d &q1, const Eigen::Vector3d &q2, const Eigen::Vector3d &q3)
 Check whether tetrahedron p0-p1-p2-p3 collides with tetrahedron q0-q1-q2.
 

Detailed Description

This class implements algorithms for detecting pairwise collisions between mesh entities of varying dimensions.

Member Function Documentation

◆ collides() [1/2]

bool CollisionPredicates::collides ( const mesh::MeshEntity entity,
const Eigen::Vector3d &  point 
)
static

Check whether entity collides with point.

Parameters
[in]entityThe entity
[in]pointThe point
Returns
True iff entity collides with cell.

◆ collides() [2/2]

bool CollisionPredicates::collides ( const mesh::MeshEntity entity_0,
const mesh::MeshEntity entity_1 
)
static

Check whether two entities collide.

Parameters
[in]entity_0The first entity
[in]entity_1The second entity
Returns
True iff entity collides with cell.

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