MeshLib C++ Docs
Loading...
Searching...
No Matches
MRMeshThickness.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRPch/MRBindingMacros.h"
4#include "MRMeshFwd.h"
5#include "MRMeshProject.h"
6#include <cfloat>
7#include <optional>
8
9namespace MR
10{
11
13[[nodiscard]] MRMESH_API std::optional<VertScalars> computeRayThicknessAtVertices( const Mesh& mesh, const ProgressCallback & progress = {} );
14[[deprecated]] MRMESH_API MR_BIND_IGNORE VertScalars computeThicknessAtVertices( const Mesh& mesh );
15
18{
20 Vector3f pt;
21 Vector3f inDir;
23
24 MRMESH_API void set( const Mesh& mesh, const MeshTriPoint & p );
25};
26
28[[nodiscard]] MRMESH_API MeshIntersectionResult rayInsideIntersect( const Mesh& mesh, const MeshPoint & m, float rayEnd = FLT_MAX );
29[[nodiscard]] MRMESH_API MeshIntersectionResult rayInsideIntersect( const Mesh& mesh, VertId v, float rayEnd = FLT_MAX );
30
31// Shrinking sphere: A parallel algorithm for computing the thickness of 3D objects
32// https://www.cad-journal.net/files/vol_13/CAD_13(2)_2016_199-207.pdf
33
36{
40 bool insideAndOutside = false;
41
44 float maxRadius = 1;
45
47 int maxIters = 16;
48
50 float minShrinkage = 0.99999f;
51
57 float minAngleCos = -1;
58};
59
67
69[[nodiscard]] MRMESH_API InSphere findInSphere( const Mesh& mesh, const MeshPoint & m, const InSphereSearchSettings & settings );
70[[nodiscard]] MRMESH_API InSphere findInSphere( const Mesh& mesh, VertId v, const InSphereSearchSettings & settings );
71
73[[nodiscard]] MRMESH_API std::optional<VertScalars> computeInSphereThicknessAtVertices( const Mesh& mesh,
74 const InSphereSearchSettings & settings, const ProgressCallback & progress = {} );
75
76} // namespace MR
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:80
std::function< bool(float)> ProgressCallback
Definition MRMesh/MRMeshFwd.h:728
Definition MRCameraOrientationPlugin.h:8
MRMESH_API InSphere findInSphere(const Mesh &mesh, const MeshPoint &m, const InSphereSearchSettings &settings)
finds maximal sphere inscribed in the mesh touching point (p) with center along the normal at (p)
std::function< bool(FaceId)> FacePredicate
Definition MRMesh/MRMeshFwd.h:555
MRMESH_API std::optional< VertScalars > computeInSphereThicknessAtVertices(const Mesh &mesh, const InSphereSearchSettings &settings, const ProgressCallback &progress={})
returns the thickness at each vertex as the diameter of the maximal inscribed sphere
MRMESH_API std::optional< VertScalars > computeRayThicknessAtVertices(const Mesh &mesh, const ProgressCallback &progress={})
returns the distance from each vertex along minus normal to the nearest mesh intersection (or FLT_MAX...
MRMESH_API MeshIntersectionResult rayInsideIntersect(const Mesh &mesh, const MeshPoint &m, float rayEnd=FLT_MAX)
returns the nearest intersection between the mesh and the ray from given point along minus normal (in...
MRMESH_API MR_BIND_IGNORE VertScalars computeThicknessAtVertices(const Mesh &mesh)
std::array< Vector3f, 3 > MR_BIND_IGNORE
Definition MRMeshBuilderTypes.h:10
controls the finding of maximal inscribed sphere in mesh
Definition MRMeshThickness.h:36
bool insideAndOutside
Definition MRMeshThickness.h:40
int maxIters
maximum number of shrinking iterations for one triangle
Definition MRMeshThickness.h:47
float minShrinkage
iterations stop if next radius is larger than minShrinkage times previous radius
Definition MRMeshThickness.h:50
float maxRadius
Definition MRMeshThickness.h:44
float minAngleCos
Definition MRMeshThickness.h:57
found maximal inscribed sphere touching input point with center along given direction
Definition MRMeshThickness.h:62
float radius
Definition MRMeshThickness.h:64
MeshProjectionResult oppositeTouchPoint
excluding input point and incident triangles, distSq - squared distance to sphere's center
Definition MRMeshThickness.h:65
Vector3f center
Definition MRMeshThickness.h:63
Definition MRMeshIntersect.h:18
describes the point of measurement on mesh
Definition MRMeshThickness.h:18
MRMESH_API void set(const Mesh &mesh, const MeshTriPoint &p)
Vector3f pt
3d coordinates
Definition MRMeshThickness.h:20
MeshTriPoint triPoint
relative position on mesh
Definition MRMeshThickness.h:19
FacePredicate notIncidentFaces
predicate that returns true for mesh faces not-incident to the point
Definition MRMeshThickness.h:22
Vector3f inDir
unit direction inside the mesh = minus normal
Definition MRMeshThickness.h:21
Definition MRMesh/MRMeshProject.h:18
Definition MRMesh/MRMeshTriPoint.h:23
Definition MRMesh/MRMesh.h:23