public void OneRing(Pointer<Point> P) { if (!Boundary) { Pointer<SDFace> face = StartFace; do { P.Increment()[0] = face[0].NextVert(this)[0].P; face = face[0].NextFace(this); } while (face != StartFace); } else { Pointer<SDFace> face = StartFace, f2; while ((f2 = face[0].NextFace(this)) != null) face = f2; P.Increment()[0] = face[0].NextVert(this)[0].P; do { P.Increment()[0] = face[0].PrevVert(this)[0].P; face = face[0].PrevFace(this); } while (face != null); } }