31 return a.distance > b.distance;
35class SurfaceDistanceBuilder
59 bool done()
const {
return nextVerts_.empty(); }
61 float doneDistance()
const {
return nextVerts_.empty() ? FLT_MAX : nextVerts_.top().distance; }
65 const VertBitSet* region_{
nullptr};
66 VertScalars vertDistanceMap_;
67 Vector<char,VertId> vertUpdatedTimes_;
68 std::priority_queue<VertDistance> nextVerts_;
69 std::optional<Vector3f> target_;
70 int maxVertUpdates_ = 3;
75 bool suggestVertDistance_( VertDistance c );
77 void suggestDistancesAround_( VertId v );
79 void considerLeftTriPath_( EdgeId e );
81 float metricToPenalty_(
float metric, VertId v )
const;
#define MRMESH_API
Definition MRMeshFwd.h:80
unsafe SurfaceDistanceBuilder(MR._ByValue_SurfaceDistanceBuilder _other)
unsafe MR.VertScalars takeDistanceMap()
unsafe void addStartVertices(MR.Phmap.Const_FlatHashMap_MRVertId_Float startVertices)
unsafe void addStart(MR.Const_MeshTriPoint start)
unsafe void addStartRegion(MR.Const_VertBitSet region, float startDistance)
unsafe void setMaxVertUpdates(int v)
unsafe MR.VertId growOne()
Definition MRSurfaceDistanceBuilder.h:18
new unsafe ref MR.VertId vert
new unsafe ref float distance
bool operator<(const VertDistance &a, const VertDistance &b)
smaller distance to be the first
Definition MRSurfaceDistanceBuilder.h:29
Definition MRCameraOrientationPlugin.h:8