Intersections

bool ipc::has_intersections(const CollisionMeshmesh,
    
Eigen::ConstRef<Eigen::MatrixXd> vertices,
    
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.

Eigen::ConstRef<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(
    
Eigen::ConstRef<Eigen::Vector3d> e0,
    
Eigen::ConstRef<Eigen::Vector3d> e1,
    
Eigen::ConstRef<Eigen::Vector3d> t0,
    
Eigen::ConstRef<Eigen::Vector3d> t1,
    
Eigen::ConstRef<Eigen::Vector3d> t2);

Check if an edge intersects a triangle.

Parameters:
Eigen::ConstRef<Eigen::Vector3d> e0

Edge start point.

Eigen::ConstRef<Eigen::Vector3d> e1

Edge end point.

Eigen::ConstRef<Eigen::Vector3d> t0

Triangle vertex 0.

Eigen::ConstRef<Eigen::Vector3d> t1

Triangle vertex 1.

Eigen::ConstRef<Eigen::Vector3d> t2

Triangle vertex 2.

Returns:

True if the edge intersects the triangle.