MeshLib C++ Docs
Loading...
Searching...
No Matches
MRInnerShell.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include <cfloat>
5
6namespace MR
7{
8
9enum class Side
10{
11 Negative,
12 Positive
13};
14
15struct FindInnerShellSettings
16{
18 Side side = Side::Negative;
19
21 float maxDistSq = FLT_MAX;
22
24 bool useWindingNumber = false;
25
28 float windingNumberThreshold = 0.25f;
29
32 int minVertsInComp = 10;
33};
34
36struct ShellVertexInfo
37{
39 bool inRange = false;
40
42 bool projOnBd = false;
43
45 bool rightSide = false;
46
48 bool valid() const { return inRange && !projOnBd && rightSide; }
49};
50
54[[nodiscard]] MRMESH_API ShellVertexInfo classifyShellVert( const MeshPart & mp, const Vector3f & shellPoint, const FindInnerShellSettings & settings = {} );
55
58[[nodiscard]] MRMESH_API VertBitSet findInnerShellVerts( const MeshPart & mp, const Mesh & shell, const FindInnerShellSettings & settings = {} );
59
62[[nodiscard]] MRMESH_API FaceBitSet findInnerShellFacesWithSplits( const MeshPart & mp, Mesh & shell, const FindInnerShellSettings & settings = {} );
63
64} // namespace MR
#define MRMESH_API
Definition MRMeshFwd.h:80
Definition MRInnerShell.h:16
new unsafe ref float windingNumberThreshold
new unsafe ref int minVertsInComp
new unsafe ref bool useWindingNumber
new unsafe ref float maxDistSq
new unsafe ref MR.Side side
Definition MRMesh/MRMesh.h:23
Definition MRInnerShell.h:37
new unsafe ref bool projOnBd
new unsafe ref bool rightSide
new unsafe ref bool inRange
Definition MRCameraOrientationPlugin.h:8
MRMESH_API VertBitSet findInnerShellVerts(const MeshPart &mp, const Mesh &shell, const FindInnerShellSettings &settings={})
MRMESH_API FaceBitSet findInnerShellFacesWithSplits(const MeshPart &mp, Mesh &shell, const FindInnerShellSettings &settings={})
MRMESH_API ShellVertexInfo classifyShellVert(const MeshPart &mp, const Vector3f &shellPoint, const FindInnerShellSettings &settings={})