Run Over: VERTICES Creates primitives at the centers of half edges, useful for constraints
removeprim(0, @primnum, 1);
int hedge = vertexhedge(0, i@vtxnum);
int oppHedge = hedge_nextequiv(0, hedge);
int countHedge = hedge_equivcount(0, hedge);
if(hedge != oppHedge)
{
int prim = addprim(0, "polyline");
int pt0 = hedge_srcpoint(0, hedge);
int pt1 = hedge_dstpoint(0, hedge);
if(pt0<pt1)
{
int prim0 = hedge_prim(0, hedge);
int prim1 = hedge_prim(0, oppHedge);
vector pos0 = point(0, "P", pt0);
vector pos1 = point(0, "P", pt1);
vector pos = avg(pos0, pos1);
vector N = point(0, "N", pt0);
vector dir = normalize(pos0-pos1);
vector movedir = cross(N, dir);
movedir *=0.01;
int newPt0 = addpoint(0, pos+movedir);
int newPt1 = addpoint(0, pos-movedir);
string name0 = prim(0, "name", prim0);
string name1 = prim(0, "name", prim1);
addpointattrib(0, "name", "");
addpointattrib(0, "id", -1);
setpointattrib(0, "name", newPt0, name0);
setpointattrib(0, "name", newPt1, name1);
setpointattrib(0, "id", newPt0, prim0);
setpointattrib(0, "id", newPt1, prim1);
addvertex(0, prim, newPt0);
addvertex(0, prim, newPt1);
}
}