-
Notifications
You must be signed in to change notification settings - Fork 7
Winged edge
phma edited this page May 1, 2016
·
1 revision
A winged edge data structure consists of three classes: points, edges, and faces; all of which contain pointers to each other. It is thus a **tangled hierarchy**. The winged edge structure used in Bezitopo is different from the standard one for two reasons:
- I'd never heard of a winged edge when I invented it.
- Bezitopo's faces are all triangles.
point.h
class point: public xyz, public drawobj { friend class edge; edge *line; // a line incident on this point in the TIN. Used to arrange the lines in order around their endpoints. edge *edg(triangle *tri); // tri.a->edg(tri) is the side opposite tri.b };
tin.h
class edge { public: point *a,*b; edge *nexta,*nextb; triangle *tria,*trib; point* otherend(point* end); triangle* othertri(triangle* t); edge* next(point* end); triangle* tri(point* end); };
bezier.h
class triangle { public: point *a,*b,*c; //corners double ctrl[7]; //There are 10 control points; the corners are three, and these are the elevations of the others. triangle *aneigh,*bneigh,*cneigh; triangle *nexttoward(xy pnt); triangle *findt(xy pnt,bool clip=false); };
These classes need to be manipulated very carefully. The maketin routine has a McCabe complexity of 63, and it took me years to get it right.