27 #ifndef __GU_Watershed_h__
28 #define __GU_Watershed_h__
71 {
return mySaddleSign(i) == 0; }
80 {
return maxTreeRoot(poly); }
83 {
return minTreeRoot(pt); }
109 auto h = pointMinHedge(pt);
117 auto h = faceMaxHedge(poly);
120 return hedgePoly(sym(
h));
128 {
return !isInMinTree(h) && !isInMaxTree(h); }
148 {
return pointMin(myMins(i)) != i; }
151 {
return faceMax(myMaxs(i)) != i; }
156 {
return myGdp->getPrimitiveVertexList(poly); }
160 {
return myGdp->vertexPoint(vtx); }
164 {
return myGdp->vertexPrimitive(vtx); }
168 {
return vertexPoly(myHip->srcVertex(h)); }
173 return GEO_Hedge(myGdp->getPrimitiveVertexList(poly)(0));
178 {
return myHip->srcVertex(h); }
182 {
return myHip->dstVertex(h); }
186 {
return myHip->srcPoint(h); }
190 {
return myHip->dstPoint(h); }
194 {
return myHip->sym(h); }
199 {
return myHip->lnext(h); }
203 {
return myHip->lprev(h); }
208 void setClassRoot(ClassRootMap &root_map,
215 int classRoot(
const ClassRootMap &root_map,
220 if (it == root_map.end())
226 void setMaxTreeRoot(
GA_Offset poly,
int root_id)
228 return setClassRoot(myMaxTreeRoot, myMaxTrees, poly, root_id);
234 return classRoot(myMaxTreeRoot, myMaxTrees, poly);
238 void setMinTreeRoot(
GA_Offset pt,
int root_id)
240 return setClassRoot(myMinTreeRoot, myMinTrees, pt, root_id);
246 return classRoot(myMinTreeRoot, myMinTrees, rep_pt);
255 ClassRootMap myMaxTreeRoot, myMinTreeRoot;
261 HedgeInterfaceUptr myOwnHip;
267 const GetFunctor myPointFn;
UT_Function< fpreal(GA_Offset)> GetFunctor
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
SYS_FORCE_INLINE GA_Offset srcPoint(const GA_Detail *gdp, GEO_Hedge h)
SYS_FORCE_INLINE GEO_Hedge faceMaxHedge(GA_Offset poly) const
UT_UniquePtr< GA_VertexGroup > GA_VertexGroupUPtr
bool isMinCanceled(int i) const
GLsizei const GLchar *const * path
fpreal saddleFn(GEO_Hedge h) const
GA_Offset srcVertex(GEO_Hedge)
int pointMin(GA_Offset pt) const
#define GEO_INVALID_HEDGE
An invalid hedge is sometimes returned if an operation is unsuccessful.
bool isMaxCanceled(int i) const
#define GA_INVALID_OFFSET
int faceMax(GA_Offset poly) const
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
GA_Offset faceAscentSucc(GA_Offset poly) const
GEO_Hedge saddleHedge(int i) const
GEO_Hedge encapsulates a half-edge (hedge) which is the restriction of.
int saddleSign(int i) const
const GA_OffsetArray & maxima() const
std::function< T > UT_Function
SYS_FORCE_INLINE GA_Offset dstVertex(T &iface, GEO_Hedge h)
SYS_FORCE_INLINE GEO_Hedge pointMinHedge(GA_Offset pt) const
UT_UniquePtr< GA_Attribute > GA_AttributeUPtr
bool isSaddleCanceled(int i) const
SYS_FORCE_INLINE bool isSaddle(GEO_Hedge h) const
GLfloat GLfloat GLfloat GLfloat h
UT_Array< GEO_Hedge > HedgeArray
OPENVDB_API SharedPtr< MapBase > simplify(SharedPtr< AffineMap > affine)
reduces an AffineMap to a ScaleMap or a ScaleTranslateMap when it can
const HedgeArray & saddles() const
const GA_OffsetArray & minima() const
const GEO_DetachedHedgeInterface HedgeInterface
GA_Offset pointDescentSucc(GA_Offset pt) const
UT_StringArray JOINTS hip
SYS_FORCE_INLINE exint classRoot(exint elem) const
SYS_FORCE_INLINE GA_Offset dstPoint(T &iface, GEO_Hedge h)