MeshLib C++ Docs
Loading...
Searching...
No Matches
MRPointsToMeshProjector.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include "MRAffineXf3.h"
5#include <cfloat>
6#include <string>
7
8namespace MR
9{
12
13
16{
17public:
18 virtual ~IPointsToMeshProjector() = default;
20 virtual void updateMeshData( const Mesh* mesh ) = 0;
22 virtual void findProjections( std::vector<MeshProjectionResult>& result, const std::vector<Vector3f>& points,
23 const AffineXf3f* worldXf = nullptr, const AffineXf3f* worldRefXf = nullptr,
24 float upDistLimitSq = FLT_MAX, float loDistLimitSq = 0.0f ) = 0;
25
27 virtual size_t projectionsHeapBytes( size_t numProjections ) const = 0;
28};
29
31{
34 float loDistLimitSq = 0;
35
38 float upDistLimitSq = FLT_MAX;
39
41 const AffineXf3f* refXf = nullptr;
42
44 const AffineXf3f* xf = nullptr;
45};
46
50[[nodiscard]] MRMESH_API VertScalars findSignedDistances(
51 const Mesh& refMesh,
52 const VertCoords & testPoints, const VertBitSet * validTestPoints = {},
53 const MeshProjectionParameters & params = {},
54 IPointsToMeshProjector * projector = {} );
55
59[[nodiscard]] MRMESH_API VertScalars findSignedDistances(
60 const Mesh& refMesh,
61 const Mesh& mesh,
62 const MeshProjectionParameters & params = {},
63 IPointsToMeshProjector * projector = {} );
64
67{
68 const Mesh* mesh_{ nullptr };
69public:
71 MRMESH_API virtual void updateMeshData( const Mesh* mesh ) override;
81 MRMESH_API virtual void findProjections( std::vector<MeshProjectionResult>& result, const std::vector<Vector3f>& points,
82 const AffineXf3f* objXf, const AffineXf3f* refObjXf,
83 float upDistLimitSq, float loDistLimitSq ) override;
84
86 MRMESH_API virtual size_t projectionsHeapBytes( size_t numProjections ) const override;
87};
88
89}
Abstract class, computes the closest point on mesh to each of given points. Pure virtual functions mu...
Definition MRPointsToMeshProjector.h:16
Computes the closest point on mesh to each of given points on CPU.
Definition MRPointsToMeshProjector.h:67
float loDistLimitSq
Definition MRPointsToMeshProjector.h:34
virtual size_t projectionsHeapBytes(size_t numProjections) const =0
Returns amount of memory needed to compute projections.
virtual MRMESH_API size_t projectionsHeapBytes(size_t numProjections) const override
Returns amount of additional memory needed to compute projections.
const AffineXf3f * refXf
optional reference mesh to world transformation
Definition MRPointsToMeshProjector.h:41
const AffineXf3f * xf
optional test points to world transformation
Definition MRPointsToMeshProjector.h:44
virtual void updateMeshData(const Mesh *mesh)=0
Updates all data related to the referencing mesh.
MRMESH_API VertScalars findSignedDistances(const Mesh &refMesh, const VertCoords &testPoints, const VertBitSet *validTestPoints={}, const MeshProjectionParameters &params={}, IPointsToMeshProjector *projector={})
if projector is not given then CPU's computations will be used
float upDistLimitSq
Definition MRPointsToMeshProjector.h:38
virtual ~IPointsToMeshProjector()=default
virtual MRMESH_API void findProjections(std::vector< MeshProjectionResult > &result, const std::vector< Vector3f > &points, const AffineXf3f *objXf, const AffineXf3f *refObjXf, float upDistLimitSq, float loDistLimitSq) override
Computes the closest point on mesh to each of given points.
virtual MRMESH_API void updateMeshData(const Mesh *mesh) override
update all data related to the referencing mesh
virtual void findProjections(std::vector< MeshProjectionResult > &result, const std::vector< Vector3f > &points, const AffineXf3f *worldXf=nullptr, const AffineXf3f *worldRefXf=nullptr, float upDistLimitSq=FLT_MAX, float loDistLimitSq=0.0f)=0
Computes the closest point on mesh to each of given points.
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRPointsToMeshProjector.h:31
Definition MRMesh.h:23