MeshLib Rust Docs
Loading...
Searching...
No Matches
MRMeshCollidePrecise.rs File Reference

Classes

struct  meshlib::EdgeTri
struct  meshlib::VarEdgeTri
struct  meshlib::VarEdgeTri_FlaggedTri

Namespaces

namespace  meshlib

Functions

auto meshlib::op_equal_mr_edge_tri (a:&meshlib::EdgeTri, b:&meshlib::EdgeTri) -> bool
auto meshlib::op_not_equal_mr_edge_tri (a:&meshlib::EdgeTri, b:&meshlib::EdgeTri) -> bool
auto meshlib::find_colliding_edge_tris_precise (a:&meshlib::MeshPart, b:&meshlib::MeshPart, conv:&meshlib::ConvertToIntVector, rigidB2A:Option<&meshlib::AffineXf3f >, anyIntersection:Option< bool >) -> meshlib::Owned< meshlib::Vector_MR_VarEdgeTri >
 finds all pairs of colliding edges from one mesh and triangle from another mesh
void meshlib::update_colliding_edge_tris_precise (res:&mut meshlib::Vector_MR_VarEdgeTri, a:&meshlib::Mesh, aFirstNewVert:meshlib::VertId, b:&meshlib::Mesh, bFirstNewVert:meshlib::VertId, conv:&meshlib::ConvertToIntVector, rigidB2A:Option<&meshlib::AffineXf3f >)
 updates the result of findCollidingEdgeTrisPrecise( a, b, conv, rigidB2A ) after some faces or edges of the meshes were split (e.g. in subdivideLoneContours) with no other changes in the meshes: removes all intersections with the triangles around new vertices (the split triangles and their new parts) and with their edges, and finds them again, which is much faster than new search if few faces were split, but slower if many were split: so if more than 1/32 of all vertices are new, the function makes new search instead; the AABB trees of the meshes must be updated after the splits (e.g. by Mesh::updateCachesAfterSplits) or invalidated
auto meshlib::find_self_colliding_edge_tris_precise (mp:&meshlib::MeshPart, conv:&meshlib::ConvertToIntVector, anyIntersection:Option< bool >, rigidB2A:Option<&meshlib::AffineXf3f >, aVertSizes:Option< core::ffi::c_int >) -> meshlib::Owned< meshlib::std_vector_MR_EdgeTri >
 finds all pairs of colliding edges and triangle within one mesh
auto meshlib::find_colliding_edge_tris_precise_edges_a (a:&meshlib::Mesh, edgesA:&meshlib::std_vector_MR_EdgeId, b:&meshlib::Mesh, facesB:&meshlib::std_vector_MR_FaceId, conv:&meshlib::ConvertToIntVector, rigidB2A:Option<&meshlib::AffineXf3f >) -> meshlib::Owned< meshlib::std_vector_MR_EdgeTri >
auto meshlib::find_colliding_edge_tris_precise_faces_a (a:&meshlib::Mesh, facesA:&meshlib::std_vector_MR_FaceId, b:&meshlib::Mesh, edgesB:&meshlib::std_vector_MR_EdgeId, conv:&meshlib::ConvertToIntVector, rigidB2A:Option<&meshlib::AffineXf3f >) -> meshlib::Owned< meshlib::std_vector_MR_EdgeTri >
auto meshlib::get_vector_converters_one_part (a:&meshlib::MeshPart) -> meshlib::Owned< meshlib::CoordinateConverters >
 creates simple converters from Vector3f to Vector3i and back in mesh part area range
auto meshlib::get_vector_converters (a:&meshlib::MeshPart, b:&meshlib::MeshPart, rigidB2A:Option<&meshlib::AffineXf3f >) -> meshlib::Owned< meshlib::CoordinateConverters >
 creates simple converters from Vector3f to Vector3i and back in mesh parts area range