MeshLib C++ Docs
Loading...
Searching...
No Matches
MROffsetContours.h
Go to the documentation of this file.
1#pragma once
2#include "MRMeshFwd.h"
3#include "MRConstants.h"
4#include "MRExpected.h"
5#include <functional>
6#include <string>
7
8namespace MR
9{
12
13
15{
17 int contourId{ -1 };
19 int vertId{ -1 };
20 bool valid() const { return contourId >= 0 && vertId >= 0; }
21};
22
24{
34
38 float lRatio{ 0.0f };
42 float uRatio{ 0.0f };
43
44 bool valid() const { return lOrg.valid(); }
45 bool isIntersection() const { return lDest.valid(); }
46};
47using OffsetContoursVertMap = std::vector<OffsetContoursOrigins>;
48using OffsetContoursVertMaps = std::vector<OffsetContoursVertMap>;
49
51{
53 enum class Type
54 {
55 Offset,
56 Shell
57 } type{ Type::Offset };
58
60 enum class EndType
61 {
62 Round,
63 Cut
64 } endType{ EndType::Round };
65
67 enum class CornerType
68 {
69 Round,
70 Sharp
71 } cornerType{ CornerType::Round };
72
74 float minAnglePrecision = PI_F / 9.0f;
76 float maxSharpAngle = PI_F * 2.0f / 3.0f;
77
80};
81
83[[nodiscard]] MRMESH_API Contours2f offsetContours( const Contours2f& contours, float offset,
84 const OffsetContoursParams& params = {} );
85
86
87using ContoursVariableOffset = std::function<float( int, int )>;
89[[nodiscard]] MRMESH_API Contours2f offsetContours( const Contours2f& contours,
90 ContoursVariableOffset offset, const OffsetContoursParams& params = {} );
91
94{
97 using OriginZCallback = std::function<float( const Contours2f& offsetCont, const OffsetContourIndex& offsetIndex, const OffsetContoursOrigins& origingContourMapoing)>;
101};
102
104[[nodiscard]] MRMESH_API Contours3f offsetContours( const Contours3f& contours, float offset,
105 const OffsetContoursParams& params = {}, const OffsetContoursRestoreZParams& zParmas = {} );
106
108[[nodiscard]] MRMESH_API Contours3f offsetContours( const Contours3f& contours,
109 ContoursVariableOffset offset, const OffsetContoursParams& params = {}, const OffsetContoursRestoreZParams& zParmas = {} );
110
111}
MRMESH_API Contours2f offsetContours(const Contours2f &contours, float offset, const OffsetContoursParams &params={})
offsets 2d contours in plane
float lRatio
Definition MROffsetContours.h:38
std::function< float(int, int)> ContoursVariableOffset
Definition MROffsetContours.h:87
std::function< float(const Contours2f &offsetCont, const OffsetContourIndex &offsetIndex, const OffsetContoursOrigins &origingContourMapoing)> OriginZCallback
Definition MROffsetContours.h:97
EndType
type of offsetting on ends of non-closed contours
Definition MROffsetContours.h:61
std::vector< OffsetContoursVertMap > OffsetContoursVertMaps
Definition MROffsetContours.h:48
OriginZCallback zCallback
Definition MROffsetContours.h:98
OffsetContourIndex uDest
index of upper corresponding destination point on input contour
Definition MROffsetContours.h:33
float minAnglePrecision
precision of round corners and ends
Definition MROffsetContours.h:74
int vertId
-1 means unknown index
Definition MROffsetContours.h:19
float maxSharpAngle
limit for sharp corners connection
Definition MROffsetContours.h:76
CornerType
type of positive offset curve in corners
Definition MROffsetContours.h:68
OffsetContourIndex uOrg
index of upper corresponding origin point on input contour
Definition MROffsetContours.h:31
OffsetContoursVertMaps * indicesMap
120 deg
Definition MROffsetContours.h:79
enum MR::OffsetContoursParams::Type Offset
bool valid() const
Definition MROffsetContours.h:44
OffsetContourIndex lDest
index of lower corresponding destination point on input contour
Definition MROffsetContours.h:29
float uRatio
Definition MROffsetContours.h:42
std::vector< OffsetContoursOrigins > OffsetContoursVertMap
Definition MROffsetContours.h:47
bool isIntersection() const
Definition MROffsetContours.h:45
int relaxIterations
if > 0 z coordinate will be relaxed this many iterations
Definition MROffsetContours.h:100
OffsetContourIndex lOrg
Definition MROffsetContours.h:27
bool valid() const
Definition MROffsetContours.h:20
int contourId
-1 means unknown index
Definition MROffsetContours.h:17
enum MR::OffsetContoursParams::EndType Round
Type
type of offset
Definition MROffsetContours.h:54
@ Round
creates round ends (use minAnglePrecision)
@ Cut
creates sharp end (same as Round with minAnglePrecision < 180 deg)
@ Sharp
creates sharp connected corner (use maxSharpAngle as limit)
@ Round
creates round corners (use minAnglePrecision)
@ Offset
One-side signed offset, requires closed contours.
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MROffsetContours.h:15
Definition MROffsetContours.h:24
Definition MROffsetContours.h:51
Parameters of restoring Z coordinate of XY offset 3d contours.
Definition MROffsetContours.h:94