Intersections

bool ipc::has_intersections(const CollisionMeshmesh,
    
const Eigen::MatrixXdvertices,
    
const std::shared_ptr<BroadPhase> broad_phase
   
 = make_default_broad_phase()
);

Determine if the mesh has self intersections.

Parameters:
const CollisionMesh &mesh

The collision mesh.

const Eigen::MatrixXd &vertices

Vertices of the collision mesh.

broad_phase_method

The broad phase method to use.

Returns:

A boolean for if the mesh has intersections.

bool ipc::is_edge_intersecting_triangle(const Eigen::Vector3de0,
    
const Eigen::Vector3de1const Eigen::Vector3dt0,
    
const Eigen::Vector3dt1const Eigen::Vector3dt2);

Check if an edge intersects a triangle.

Parameters:
const Eigen::Vector3d &e0

Edge start point.

const Eigen::Vector3d &e1

Edge end point.

const Eigen::Vector3d &t0

Triangle vertex 0.

const Eigen::Vector3d &t1

Triangle vertex 1.

const Eigen::Vector3d &t2

Triangle vertex 2.

Returns:

True if the edge intersects the triangle.


Last update: Feb 18, 2025