13struct SortIntersectionsData
15 const Mesh& otherMesh;
17 ConvertToIntVector converter;
18 const AffineXf3f* rigidB2A{
nullptr};
24struct OneMeshIntersection
26 std::variant<FaceId, EdgeId, VertId> primitiveId;
34 std::vector<OneMeshIntersection> intersections;
44using OneMeshContours = std::vector<OneMeshContour>;
55 OneMeshContours* outA, OneMeshContours* outB,
57 Contours3f* outPtsA =
nullptr,
58 bool addSelfyTerminalVerts =
false );
70using MeshTriPointsConnector = std::function<Expected<SurfacePath>(
const MeshTriPoint& start,
const MeshTriPoint&
end,
int startIndex,
int endIndex )>;
80 MeshTriPointsConnector connectorFn, std::vector<int>* pivotIndices =
nullptr );
86 int maxReduceIters{ 100 };
132 const SurfacePath& surfacePath,
#define MRMESH_API
Definition MRMeshFwd.h:80
Definition MRPrecisePredicates3.h:58
Definition MRMeshTriPoint.h:23
Definition MRMesh/MRMesh.h:23
Definition MROneMeshContours.h:33
Definition MROneMeshContours.h:84
new unsafe ref MR.GeodesicPathApprox geodesicPathApprox
MR_BIND_IGNORE auto end(const BitSet &)
Definition MRMesh/MRBitSet.h:382
MR_BIND_IGNORE MRMESH_API Expected< OneMeshContour > convertMeshTriPointsToMeshContour(const Mesh &mesh, const std::vector< MeshTriPoint > &surfaceLine, MeshTriPointsConnector connectorFn, std::vector< int > *pivotIndices=nullptr)
Makes continuous contour by mesh tri points, if first and last meshTriPoint is the same,...
MRMESH_API OneMeshContour convertSurfacePathWithEndsToMeshContour(const Mesh &mesh, const MeshTriPoint &start, const SurfacePath &surfacePath, const MeshTriPoint &end)
Converts SurfacePath to OneMeshContours.
MRMESH_API Expected< OneMeshContour > convertMeshTriPointsToClosedContour(const Mesh &mesh, const std::vector< MeshTriPoint > &surfaceLine, SearchPathSettings searchSettings={}, std::vector< int > *pivotIndices=nullptr)
Makes closed continuous contour by mesh tri points, note that first and last meshTriPoint should not ...
MRMESH_API OneMeshContours convertSurfacePathsToMeshContours(const Mesh &mesh, const std::vector< SurfacePath > &surfacePaths)
Converts SurfacePaths to OneMeshContours.
Definition MRCameraOrientationPlugin.h:8
MRMESH_API void subdivideLoneContours(Mesh &mesh, const OneMeshContours &contours, FaceHashMap *new2oldMap=nullptr)
MRMESH_API Contours3f extractMeshContours(const OneMeshContours &meshContours)
MRMESH_API void getOneMeshIntersectionContours(const Mesh &meshA, const Mesh &meshB, const ContinuousContours &contours, OneMeshContours *outA, OneMeshContours *outB, const CoordinateConverters &converters, const AffineXf3f *rigidB2A=nullptr, Contours3f *outPtsA=nullptr, bool addSelfyTerminalVerts=false)
if true, then open self-intersection contours will be prolonged to terminal vertices
MRMESH_API OneMeshContours getOneMeshSelfIntersectionContours(const Mesh &mesh, const ContinuousContours &contours, const CoordinateConverters &converters, const AffineXf3f *rigidB2A=nullptr)