private void countProperties() {
/* chain is better then face anyway
* 'cause it is in the proper order
* must be ccw
*/
Chain c =
GraphHelper.getInstance()
.dfsChainSearchUnOri(f,
new Chain(f),
(SimpleVertex) f.getVertices().get(0),
(SimpleVertex) f.getVertices().get(0));
f.removePropertyAsc(GraphHelper.getInstance());
// the uppermost edge
SimpleEdge upperedge = GeometricHelper.getUpperEdge(c);
// index of the next for upper
int nexti;
if (c.getEdges()
.indexOf(upperedge) == (c.getEdges()
.size() - 1)) {
nexti = 0;
} else {
nexti = c.getEdges()
.indexOf(upperedge) + 1;
}
// whether order is ccw or cw
SimpleEdge nextupper = (SimpleEdge) c.getEdges()
.get(nexti);
if (!CompactionHelper.getIntersection(upperedge, nextupper)
.equals(GeometricHelper.getRightVetrtex(upperedge))) {
Collections.reverse(c.getEdges());
}
SimpleEdge[] edges = (SimpleEdge[]) c.getEdges()
.toArray(new SimpleEdge[0]);
SimpleEdge prev = edges[edges.length - 1];
for (int i = 0; i < edges.length; i++) {
SimpleEdge curr = edges[i];