#include <GQ_Detail.h>
Public Member Functions | |
| GQ_Detail (GU_Detail *gdp, GB_PrimitiveGroup *=0, float super_point_tolerance=1E-6) | |
| ~GQ_Detail () | |
| void | clearAndDestroy (void) |
| void | cusp (float angle) |
| Cusp polygons which have adjacent edges larger than angle (in degrees). | |
| void | cusp (const GB_EdgeGroup &edges, bool do_cut=false) |
| Cusp edges in a group. | |
| void | clip (UT_Vector3 &norm, float distance, int normalize) |
| int | crease (UT_Vector3 &norm, float distance, int normalize, int outputGroups, GB_PrimitiveGroup *primitive_above=0, GB_PrimitiveGroup *primitive_below=0) |
| void | bricker (float sizex=1.0, float sizey=1.0, float sizez=1.0, float offx=0.0, float offy=0.0, float offz=0.0, float anglex=0.0, float angley=0.0, float anglez=0.0) |
| void | doBoolean (const GU_Detail *A, const GU_Detail *B, GQ_BooleanOpType op, const int outputGroups=0, const char *AgroupName=0, const char *BgroupName=0, int accurateAttrib=0, int trials=5) |
| void | smooth (int divisions, float relativeSize, float weight) |
| void | smoothPolygons (int iterations, GU_WeightingType type, float lambda, float mu, bool useptattrib=false, int attriboffset=-1, int attribsize=0) |
| void | createEdgeWeights () |
| void | setCreaseWeight (const GEO_PrimPoly &poly, float weight) |
| void | setCreaseWeight (const GEO_PrimPoly &poly, int vtxoff=-1, int primoff=-1) |
| void | setCreaseWeight (const GB_Edge &edge, float weight) |
| void | setCreaseWeight (const GB_Edge &gedge, int vtxoff=-1, int primoff=-1) |
| float | getEdgeWeight (const GB_Edge &edge) |
| void | subdivide (const GQ_SubdivideParms &parms, GB_PrimitiveGroup *nonsubdivprims) |
| void | dual () |
| void | stitch (const GQ_StitchParms &parms) |
| int | stitchEdges (GU_PrimPoly &polya, const UT_PtrArray< GU_PrimPoly * > &facea, GU_PrimPoly &polyb, const UT_PtrArray< GU_PrimPoly * > &faceb, GB_PrimitiveGroup &changedpolys, float tol, int clamp, int consolidate) |
| void | makeWire (float radius, int doSpheres, int doCaps) |
| void | buildGeometry () |
| void | buildCreases (GB_PrimitiveGroup *group=0) |
| void | copyEdgeWeightToVertex () |
| void | unHole (int maintain) |
| void | boundary () |
| void | createCuspGroup (float, GB_PrimitiveGroup *grp) |
| void | createBoundaryGroup (GB_PrimitiveGroup &grp) |
| void | createBoundaryGroup (GB_PointGroup &grp, UT_IntArray *arr) |
| void | createBoundaryGroup (const GEO_Point *ppt, GB_PointGroup &pointgroup) |
| void | createBoundaryGroup (const GB_Edge &edge, GB_PointGroup &grp, GEO_PrimPoly *&poly) |
| void | groupEdgePoints (const GEO_Point *ppt, int depth, GB_PointGroup &point_group) |
| int | isClose () |
| void | deleteAllShareEdges () |
| GQ_Point * | appendPoint (const GQ_Point *src=0) |
| GQ_Edge * | appendEdge () |
| GQ_Face * | appendFace (GEO_PrimPoly *poly) |
| void | removePoint (GQ_Point *p) |
| void | removePoint (int i) |
| void | removeEdge (GQ_Edge *e) |
| void | removeEdge (int i) |
| void | removeFace (GQ_Face *f) |
| void | removeFace (int i) |
| void | collapseEdgeList () |
| void | collapseFaceList () |
| UT_PtrArray< GQ_Point * > & | getPointList () |
| const UT_PtrArray< GQ_Point * > & | getPointList () const |
| UT_PtrArray< GQ_Edge * > & | getEdgeList () |
| const UT_PtrArray< GQ_Edge * > & | getEdgeList () const |
| UT_FloatArray & | getEdgeWeights () |
| const UT_FloatArray & | getEdgeWeights () const |
| UT_PtrArray< GQ_Face * > & | getFaceList () |
| const UT_PtrArray< GQ_Face * > & | getFaceList () const |
| GU_Detail * | getGdp () |
| const GU_Detail * | getGdp () const |
| GU_RayIntersect * | getRay () |
| void | buildRay () |
| UT_IntArray & | getOffsets () |
| GQ_Point * | splitEdge (GQ_Edge *edge, float t) |
| void | splitEdge (GQ_Edge *edge, GQ_Detail *B) |
| GQ_Edge * | splitEdge (GQ_Edge *, GQ_Point &pt) |
| void | deleteShareEdge (GQ_Edge *edge, GB_PrimitiveGroup *deletePrimGroup=0) |
| void | wireEdge (GQ_Edge *edge, float radius, int doCaps) |
| void | pointSphere (GQ_Point *pt, float radius) |
| int | nEdges (void) const |
| int | nFaces (void) const |
| int | nPoints (void) const |
| GU_Detail * | getDetail (void) const |
| int | aboveOrBelow (GQ_Face *face) |
| void | markPoints (GQ_Detail *B) |
| void | markEdges (GQ_Detail *B) |
| void | markFaces (GQ_Detail *B) |
| void | markFace (GQ_Face *f, GQ_Detail *B) |
| void | markComponent (GQ_Face *f, unsigned mark) |
| void | markComponent () |
| void | buildAllSplitFaces (GQ_Detail *B) |
| void | buildSplitFaces (GQ_Face *face, GQ_Edge *edge, GQ_Detail *B) |
| void | traceIntersectEdges () |
| void | traceIntersectEdges (GQ_Edge *edge) |
| void | cleanOffsets () |
| void | setupOffsets () |
| void | deleteAllFaces (GB_PrimitiveGroup *) |
| void | deleteAllMaskFaces (unsigned mask, GB_PrimitiveGroup *) |
| void | correctAllFaceMarkings () |
| void | flipAllFaceNormals () |
| void | simpleDecimate (int targetPolys) |
| void | meshOptimize (float tol=1E-5) |
| void | decCollapse (GQ_Edge *e, GB_PrimitiveGroup *) |
| void | decSplit (GQ_Edge *e) |
| void | decSwap (GQ_Edge *e) |
| void | save (ostream &os) const |
| GQ_Edge * | findEdge (const GB_Edge *edge) |
| GQ_Edge * | findEdge (const GQ_Point *org, const GQ_Point *dest) |
| GEO_Point * | stepForward (const GB_Edge *edge) |
| GEO_Point * | pickArbitraryConnectedPoint (const GEO_Point *org) |
| GEO_Point * | rotateAboutOrigin (GB_Edge &edge, int dir) |
| GQ_Detail * | duplicate () const |
| GEO_PrimPoly * | adjacentFace (const GEO_Face &face, int edge) |
Friends | |
| ostream & | operator<< (ostream &os, const GQ_Detail &d) |
The Quad Edge data structure was invented by Guibas & Stolfi in their 1985 paper, "Primitives for the Manipulation of General Subdivisions and the Computation of Voronoi Diagrams", ACM Transactions on Graphics, 4(2):74-123, April 1985.
That paper has a good description of the capabilities of the data structure, and the definition of its basic operators, makeedge and splice().
Definition at line 65 of file GQ_Detail.h.
| GQ_Detail::GQ_Detail | ( | GU_Detail * | gdp, | |
| GB_PrimitiveGroup * | = 0, |
|||
| float | super_point_tolerance = 1E-6 | |||
| ) |
| GQ_Detail::~GQ_Detail | ( | ) |
| int GQ_Detail::aboveOrBelow | ( | GQ_Face * | face | ) |
| GEO_PrimPoly* GQ_Detail::adjacentFace | ( | const GEO_Face & | face, | |
| int | edge | |||
| ) |
| GQ_Edge* GQ_Detail::appendEdge | ( | ) |
| GQ_Face* GQ_Detail::appendFace | ( | GEO_PrimPoly * | poly | ) |
| void GQ_Detail::boundary | ( | ) |
| void GQ_Detail::bricker | ( | float | sizex = 1.0, |
|
| float | sizey = 1.0, |
|||
| float | sizez = 1.0, |
|||
| float | offx = 0.0, |
|||
| float | offy = 0.0, |
|||
| float | offz = 0.0, |
|||
| float | anglex = 0.0, |
|||
| float | angley = 0.0, |
|||
| float | anglez = 0.0 | |||
| ) |
| void GQ_Detail::buildAllSplitFaces | ( | GQ_Detail * | B | ) |
| void GQ_Detail::buildCreases | ( | GB_PrimitiveGroup * | group = 0 |
) |
| void GQ_Detail::buildGeometry | ( | ) |
| void GQ_Detail::buildRay | ( | ) | [inline] |
Definition at line 207 of file GQ_Detail.h.
| void GQ_Detail::cleanOffsets | ( | ) |
| void GQ_Detail::clearAndDestroy | ( | void | ) |
| void GQ_Detail::clip | ( | UT_Vector3 & | norm, | |
| float | distance, | |||
| int | normalize | |||
| ) |
| void GQ_Detail::collapseEdgeList | ( | ) | [inline] |
Definition at line 194 of file GQ_Detail.h.
| void GQ_Detail::collapseFaceList | ( | ) | [inline] |
Definition at line 195 of file GQ_Detail.h.
| void GQ_Detail::copyEdgeWeightToVertex | ( | ) |
| void GQ_Detail::correctAllFaceMarkings | ( | ) |
| int GQ_Detail::crease | ( | UT_Vector3 & | norm, | |
| float | distance, | |||
| int | normalize, | |||
| int | outputGroups, | |||
| GB_PrimitiveGroup * | primitive_above = 0, |
|||
| GB_PrimitiveGroup * | primitive_below = 0 | |||
| ) |
| void GQ_Detail::createBoundaryGroup | ( | const GB_Edge & | edge, | |
| GB_PointGroup & | grp, | |||
| GEO_PrimPoly *& | poly | |||
| ) |
| void GQ_Detail::createBoundaryGroup | ( | const GEO_Point * | ppt, | |
| GB_PointGroup & | pointgroup | |||
| ) |
| void GQ_Detail::createBoundaryGroup | ( | GB_PointGroup & | grp, | |
| UT_IntArray * | arr | |||
| ) |
| void GQ_Detail::createBoundaryGroup | ( | GB_PrimitiveGroup & | grp | ) |
| void GQ_Detail::createCuspGroup | ( | float | , | |
| GB_PrimitiveGroup * | grp | |||
| ) |
| void GQ_Detail::createEdgeWeights | ( | ) |
| void GQ_Detail::cusp | ( | const GB_EdgeGroup & | edges, | |
| bool | do_cut = false | |||
| ) |
Cusp edges in a group.
| void GQ_Detail::cusp | ( | float | angle | ) |
Cusp polygons which have adjacent edges larger than angle (in degrees).
| void GQ_Detail::decCollapse | ( | GQ_Edge * | e, | |
| GB_PrimitiveGroup * | ||||
| ) |
| void GQ_Detail::decSplit | ( | GQ_Edge * | e | ) |
| void GQ_Detail::decSwap | ( | GQ_Edge * | e | ) |
| void GQ_Detail::deleteAllFaces | ( | GB_PrimitiveGroup * | ) |
| void GQ_Detail::deleteAllMaskFaces | ( | unsigned | mask, | |
| GB_PrimitiveGroup * | ||||
| ) |
| void GQ_Detail::deleteAllShareEdges | ( | ) |
| void GQ_Detail::deleteShareEdge | ( | GQ_Edge * | edge, | |
| GB_PrimitiveGroup * | deletePrimGroup = 0 | |||
| ) |
| void GQ_Detail::doBoolean | ( | const GU_Detail * | A, | |
| const GU_Detail * | B, | |||
| GQ_BooleanOpType | op, | |||
| const int | outputGroups = 0, |
|||
| const char * | AgroupName = 0, |
|||
| const char * | BgroupName = 0, |
|||
| int | accurateAttrib = 0, |
|||
| int | trials = 5 | |||
| ) |
| void GQ_Detail::dual | ( | ) |
| GQ_Detail* GQ_Detail::duplicate | ( | ) | const [inline] |
Be very, very careful using this method. GQ_Detail was never designed to be duplicated, and this method doesn't make a true copy. It does do a deep copy of the edge/face/point structures, but the two GQ_Detail objects still reference the same GDP, and could hence easily cause problems.
Also, several parts of the member data are *not* currently duplicated, including
Finally, this method will modify this GQ_Detail by changing the faces' index member data. Be forewarned!
This method was written for GQ_PolyDelaunay, which needed a way to "backup" a GQ_Detail and revert if an error occurred. That code is very careful to avoid making any changes to the underlying gdp.
Definition at line 295 of file GQ_Detail.h.
| void GQ_Detail::flipAllFaceNormals | ( | ) |
| GU_Detail* GQ_Detail::getDetail | ( | void | ) | const [inline] |
Definition at line 228 of file GQ_Detail.h.
| const UT_PtrArray<GQ_Edge *>& GQ_Detail::getEdgeList | ( | ) | const [inline] |
Definition at line 199 of file GQ_Detail.h.
| UT_PtrArray<GQ_Edge *>& GQ_Detail::getEdgeList | ( | ) | [inline] |
Definition at line 198 of file GQ_Detail.h.
| float GQ_Detail::getEdgeWeight | ( | const GB_Edge & | edge | ) |
| const UT_FloatArray& GQ_Detail::getEdgeWeights | ( | ) | const [inline] |
Definition at line 201 of file GQ_Detail.h.
| UT_FloatArray& GQ_Detail::getEdgeWeights | ( | ) | [inline] |
Definition at line 200 of file GQ_Detail.h.
| const UT_PtrArray<GQ_Face *>& GQ_Detail::getFaceList | ( | ) | const [inline] |
Definition at line 203 of file GQ_Detail.h.
| UT_PtrArray<GQ_Face *>& GQ_Detail::getFaceList | ( | ) | [inline] |
Definition at line 202 of file GQ_Detail.h.
| const GU_Detail* GQ_Detail::getGdp | ( | ) | const [inline] |
Definition at line 205 of file GQ_Detail.h.
| GU_Detail* GQ_Detail::getGdp | ( | ) | [inline] |
Definition at line 204 of file GQ_Detail.h.
| UT_IntArray& GQ_Detail::getOffsets | ( | ) | [inline] |
Definition at line 212 of file GQ_Detail.h.
| const UT_PtrArray<GQ_Point *>& GQ_Detail::getPointList | ( | ) | const [inline] |
Definition at line 197 of file GQ_Detail.h.
| UT_PtrArray<GQ_Point *>& GQ_Detail::getPointList | ( | ) | [inline] |
Definition at line 196 of file GQ_Detail.h.
| GU_RayIntersect* GQ_Detail::getRay | ( | ) | [inline] |
Definition at line 206 of file GQ_Detail.h.
| void GQ_Detail::groupEdgePoints | ( | const GEO_Point * | ppt, | |
| int | depth, | |||
| GB_PointGroup & | point_group | |||
| ) |
| int GQ_Detail::isClose | ( | ) |
| void GQ_Detail::makeWire | ( | float | radius, | |
| int | doSpheres, | |||
| int | doCaps | |||
| ) |
| void GQ_Detail::markComponent | ( | ) |
| void GQ_Detail::markComponent | ( | GQ_Face * | f, | |
| unsigned | mark | |||
| ) |
| void GQ_Detail::markEdges | ( | GQ_Detail * | B | ) |
| void GQ_Detail::markFaces | ( | GQ_Detail * | B | ) |
| void GQ_Detail::markPoints | ( | GQ_Detail * | B | ) |
| void GQ_Detail::meshOptimize | ( | float | tol = 1E-5 |
) |
| int GQ_Detail::nEdges | ( | void | ) | const [inline] |
Definition at line 225 of file GQ_Detail.h.
| int GQ_Detail::nFaces | ( | void | ) | const [inline] |
Definition at line 226 of file GQ_Detail.h.
| int GQ_Detail::nPoints | ( | void | ) | const [inline] |
Definition at line 227 of file GQ_Detail.h.
| void GQ_Detail::pointSphere | ( | GQ_Point * | pt, | |
| float | radius | |||
| ) |
| void GQ_Detail::removeEdge | ( | int | i | ) |
| void GQ_Detail::removeEdge | ( | GQ_Edge * | e | ) |
| void GQ_Detail::removeFace | ( | int | i | ) |
| void GQ_Detail::removeFace | ( | GQ_Face * | f | ) |
| void GQ_Detail::removePoint | ( | int | i | ) |
| void GQ_Detail::removePoint | ( | GQ_Point * | p | ) |
| void GQ_Detail::save | ( | ostream & | os | ) | const |
| void GQ_Detail::setCreaseWeight | ( | const GB_Edge & | gedge, | |
| int | vtxoff = -1, |
|||
| int | primoff = -1 | |||
| ) |
| void GQ_Detail::setCreaseWeight | ( | const GB_Edge & | edge, | |
| float | weight | |||
| ) |
| void GQ_Detail::setCreaseWeight | ( | const GEO_PrimPoly & | poly, | |
| int | vtxoff = -1, |
|||
| int | primoff = -1 | |||
| ) |
| void GQ_Detail::setCreaseWeight | ( | const GEO_PrimPoly & | poly, | |
| float | weight | |||
| ) |
| void GQ_Detail::setupOffsets | ( | ) |
| void GQ_Detail::simpleDecimate | ( | int | targetPolys | ) |
| void GQ_Detail::smooth | ( | int | divisions, | |
| float | relativeSize, | |||
| float | weight | |||
| ) |
| void GQ_Detail::smoothPolygons | ( | int | iterations, | |
| GU_WeightingType | type, | |||
| float | lambda, | |||
| float | mu, | |||
| bool | useptattrib = false, |
|||
| int | attriboffset = -1, |
|||
| int | attribsize = 0 | |||
| ) |
| void GQ_Detail::stitch | ( | const GQ_StitchParms & | parms | ) |
| int GQ_Detail::stitchEdges | ( | GU_PrimPoly & | polya, | |
| const UT_PtrArray< GU_PrimPoly * > & | facea, | |||
| GU_PrimPoly & | polyb, | |||
| const UT_PtrArray< GU_PrimPoly * > & | faceb, | |||
| GB_PrimitiveGroup & | changedpolys, | |||
| float | tol, | |||
| int | clamp, | |||
| int | consolidate | |||
| ) |
| void GQ_Detail::subdivide | ( | const GQ_SubdivideParms & | parms, | |
| GB_PrimitiveGroup * | nonsubdivprims | |||
| ) |
| void GQ_Detail::traceIntersectEdges | ( | GQ_Edge * | edge | ) |
| void GQ_Detail::traceIntersectEdges | ( | ) |
| void GQ_Detail::unHole | ( | int | maintain | ) |
| void GQ_Detail::wireEdge | ( | GQ_Edge * | edge, | |
| float | radius, | |||
| int | doCaps | |||
| ) |
| ostream& operator<< | ( | ostream & | os, | |
| const GQ_Detail & | d | |||
| ) | [friend] |
Definition at line 259 of file GQ_Detail.h.
1.5.9