44 [[nodiscard]]
bool isInBounds(
size_t x,
size_t y )
const {
return x < size_t(
dims_.x ) && y < size_t(
dims_.y ); }
49 [[nodiscard]]
MRMESH_API std::optional<float>
get(
size_t x,
size_t y )
const;
54 [[nodiscard]]
float&
getValue(
size_t x,
size_t y )
56 return data_[
toIndex( { int( x ), int( y ) } )];
58 [[nodiscard]]
float getValue(
size_t x,
size_t y )
const
60 return data_[
toIndex( { int( x ), int( y ) } )];
71 float*
data() {
return data_.data(); }
72 const float*
data()
const {
return data_.data(); }
88 [[nodiscard]]
MRMESH_API std::optional<Vector3f>
unproject(
size_t x,
size_t y,
const AffineXf3f& toWorld )
const;
142 [[nodiscard]]
size_t resX()
const
147 [[nodiscard]]
size_t resY()
const
175 std::vector<float> data_;
200 } type{ OffsetType::Shell };
215 } signMethod{ ContourOrientation };
260 const AffineXf3f& xf,
float isoValue,
bool useDepth =
false );
constexpr A operator-(A a)
Definition MRImGuiVectorOperators.h:98
constexpr A & operator-=(A &a, B b)
Definition MRImGuiVectorOperators.h:113
#define MRMESH_API
Definition MRMeshFwd.h:80
Definition MRDistanceMap.h:24
DistanceMap min(const DistanceMap &rhs) const
returns new Distance Map with cell-wise minimum values. Invalid values remain only if both correspond...
std::pair< size_t, size_t > getMaxIndex() const
void negate()
replaces every valid element in the map with its negative value
DistanceMap getDerivativeMap() const
returns new derivatives map without directions
std::optional< Vector3f > unprojectInterpolated(float x, float y, const AffineXf3f &toWorld) const
finds 3d coordinates of the Point on the model surface for the (x,y) interpolated value
float getValue(size_t i) const
Definition MRDistanceMap.h:66
DistanceMap(const MR::Matrix< float > &m)
make from 2d array
float & getValue(size_t i)
Definition MRDistanceMap.h:62
void clear()
clears data, sets resolutions to zero
float * data()
Definition MRDistanceMap.h:71
const float * data() const
Definition MRDistanceMap.h:72
float getValue(size_t x, size_t y) const
Definition MRDistanceMap.h:58
std::vector< std::pair< size_t, size_t > > getLocalMaximums() const
computes single derivative map from XY spaces combined. Returns local maximums then
void unset(size_t x, size_t y)
invalidates value in (X,Y) element (the coords must be valid, UB otherwise)
void unset(size_t i)
invalidates value in index element (the coord must be valid, UB otherwise)
DistanceMap(size_t resX, size_t resY)
size_t resX() const
returns X resolution
Definition MRDistanceMap.h:142
bool isValid(size_t i) const
checks if index element is valid (i.e. not NOT_VALID_VALUE; passing an invalid coord to this is UB)
void invalidateAll()
invalidates all elements
size_t heapBytes() const
returns the amount of memory this object occupies on heap
Definition MRDistanceMap.h:169
float & getValue(size_t x, size_t y)
Definition MRDistanceMap.h:54
const DistanceMap & mergeMax(const DistanceMap &rhs)
replaces values with cell-wise maximum values. Invalid values remain only if both corresponding cells...
std::pair< DistanceMap, DistanceMap > getXYDerivativeMaps() const
returns new derivative maps with X and Y axes direction
std::pair< float, float > getMinMaxValues() const
size_t resY() const
returns Y resolution
Definition MRDistanceMap.h:147
std::optional< float > get(size_t i) const
returns value of index element, returns nullopt if not valid (see isValid()), UB if out of bounds.
std::pair< size_t, size_t > getMinIndex() const
bool isInBounds(size_t x, size_t y) const
Returns true if (X,Y) coordinates are in bounds.
Definition MRDistanceMap.h:44
void set(size_t i, float val)
sets value in index element (the coord must be valid, UB otherwise)
void set(size_t x, size_t y, float val)
sets value in (X,Y) element (the coords must be valid, UB otherwise)
bool isValid(size_t x, size_t y) const
checks if X,Y element is valid (i.e. not NOT_VALID_VALUE; passing invalid coords to this is UB)
std::optional< Vector3f > unproject(size_t x, size_t y, const AffineXf3f &toWorld) const
std::optional< float > getInterpolated(float x, float y) const
finds interpolated value.
std::optional< float > get(size_t x, size_t y) const
returns value in (X,Y) element, returns nullopt if not valid (see isValid()), UB if out of bounds.
static constexpr float NOT_VALID_VALUE
a constant that is treated as 'no value' or 'invalid value'
Definition MRDistanceMap.h:36
DistanceMap max(const DistanceMap &rhs) const
const DistanceMap & mergeMin(const DistanceMap &rhs)
replaces values with cell-wise minimum values. Invalid values remain only if both corresponding cells...
void set(std::vector< float > data)
sets all values at one time
size_t numPoints() const
returns the number of pixels
Definition MRDistanceMap.h:153
bool isInBounds(size_t i) const
Returns true if a flattened coordinate is in bounds.
Definition MRDistanceMap.h:46
constexpr RectIndexer() noexcept=default
Vector2i dims_
Definition MRRectIndexer.h:57
size_t size() const
Definition MRRectIndexer.h:44
size_t size_
= dims_.x * dims_.y
Definition MRRectIndexer.h:58
std::vector<T>-like container that requires specific indexing type,
Definition MRVector.h:23
size_t heapBytes(const BitSet &bs)
returns the amount of memory given BitSet occupies on heap
Definition MRBitSet.h:364
std::function< bool(float)> ProgressCallback
Definition MRMeshFwd.h:753
DistanceMap computeDistanceMapD(const MeshPart &mp, const MeshToDistanceMapParams ¶ms, ProgressCallback cb={}, std::vector< MeshTriPoint > *outSamples=nullptr)
DistanceMap distanceMapFromContours(const Polyline2 &contours, const ContourToDistanceMapParams ¶ms, const ContoursDistanceMapOptions &options={})
Computes distance of 2d contours according ContourToDistanceMapParams.
Polyline2 contourSubtract(const Polyline2 &contoursA, const Polyline2 &contoursB, const ContourToDistanceMapParams ¶ms, float offsetInside=0.f)
computes the difference between the shapes bounded by contoursA and the shapes bounded by contoursB
Image convertDistanceMapToImage(const DistanceMap &distMap, float threshold=1.f/255)
Expected< Mesh > distanceMapToMesh(const DistanceMap &distMap, const AffineXf3f &toWorld, ProgressCallback cb={})
converts distance map into mesh and applies a transformation to all points
Polyline2 contourIntersection(const Polyline2 &contoursA, const Polyline2 &contoursB, const ContourToDistanceMapParams ¶ms, float offsetInside=0.f)
computes the intersection of the shapes bounded by input 2d contours
DistanceMap computeDistanceMap(const MeshPart &mp, const MeshToDistanceMapParams ¶ms, ProgressCallback cb={}, std::vector< MeshTriPoint > *outSamples=nullptr)
std::vector< Vector3f > edgePointsFromContours(const Polyline2 &polyline, float pixelSize, float threshold)
Polyline2 contourUnion(const Polyline2 &contoursA, const Polyline2 &contoursB, const ContourToDistanceMapParams ¶ms, float offsetInside=0)
computes the union of the shapes bounded by input 2d contours
Polyline2 distanceMapTo2DIsoPolyline(const DistanceMap &distMap, float isoValue)
size_t toIndex(const Vector2i &pos) const
Definition MRRectIndexer.h:79
Polyline2 polylineOffset(const Polyline2 &polyline, float pixelSize, float offset)
constructs an offset contour for given polyline
Expected< DistanceMap > convertImageToDistanceMap(const Image &image, float threshold=1.f/255, bool invert=true)
DistanceMap combineXYderivativeMaps(std::pair< DistanceMap, DistanceMap > XYderivativeMaps)
fill another distance map pair with gradients across X and Y axes of the argument map
tl::expected< T, E > Expected
Definition MRExpected.h:31
Polyline2
Definition MRMeshFwd.h:658
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Structure with parameters to generate DistanceMap by Contours.
Definition MRDistanceMapParams.h:94
Structure with parameters for optional offset in distanceMapFromContours function.
Definition MRDistanceMap.h:193
enum MR::ContoursDistanceMapOffset::OffsetType Shell
const Vector< float, UndirectedEdgeId > & perEdgeOffset
offset values for each undirected edge of given polyline
Definition MRDistanceMap.h:195
OffsetType
Definition MRDistanceMap.h:197
@ Normal
distance map from given polyline with values offset
Definition MRDistanceMap.h:198
Definition MRDistanceMap.h:204
float maxDist
maximum value (or absolute value if offsetParameters == nullptr) in a pixel of distance map (larger v...
Definition MRDistanceMap.h:225
const ContoursDistanceMapOffset * offsetParameters
optional input offset for each edges of polyline, find more on ContoursDistanceMapOffset structure de...
Definition MRDistanceMap.h:217
SignedDetectionMethod
method to calculate sign
Definition MRDistanceMap.h:207
@ WindingRule
Definition MRDistanceMap.h:214
std::vector< UndirectedEdgeId > * outClosestEdges
optional output vector of closest polyline edge per each pixel of distance map
Definition MRDistanceMap.h:221
float minDist
minimum value (or absolute value if offsetParameters == nullptr) in a pixel of distance map (lower va...
Definition MRDistanceMap.h:223
const PixelBitSet * region
if pointer is valid, then only these pixels will be filled
Definition MRDistanceMap.h:219
enum MR::ContoursDistanceMapOptions::SignedDetectionMethod ContourOrientation
Definition MRDistanceMapParams.h:17