qes.getVertices(false);
int iV = 0;
for (com.vividsolutions.jts.triangulate.quadedge.Vertex v : qeVertices) {
this.coordinates.put(v.getCoordinate(), iV);
this.vertices.put(iV, new Vertex(iV, v.getCoordinate()));
iV++;
}
// border
List<QuadEdge> qeFrameBorder = new ArrayList<QuadEdge>();
List<QuadEdge> qeFrame = new ArrayList<QuadEdge>();
List<QuadEdge> qeBorder = new ArrayList<QuadEdge>();
for (QuadEdge qe : quadEdges) {
if (qes.isFrameBorderEdge(qe)) {
qeFrameBorder.add(qe);
}
if (qes.isFrameEdge(qe)) {
qeFrame.add(qe);
}
}
// border
for (int j = 0 ; j < qeFrameBorder.size() ; j++) {
QuadEdge q = qeFrameBorder.get(j);
if (! qeFrame.contains(q)) {
qeBorder.add(q);
}
}
// deletion of exterior edges
for (QuadEdge qe : qeFrame) {
qes.delete(qe);
}
HashMap<QuadEdge, Double> qeDistances = new HashMap<QuadEdge, Double>();
for (QuadEdge qe : quadEdges) {
qeDistances.put(qe, qe.toLineSegment().getLength());
}
DoubleComparator dc = new DoubleComparator(qeDistances);
TreeMap<QuadEdge, Double> qeSorted = new TreeMap<QuadEdge, Double>(dc);
qeSorted.putAll(qeDistances);
// edges creation
int i = 0;
for (QuadEdge qe : qeSorted.keySet()) {
LineSegment s = qe.toLineSegment();
s.normalize();
Integer idS = this.coordinates.get(s.p0);
Integer idD = this.coordinates.get(s.p1);
Vertex oV = this.vertices.get(idS);
Vertex eV = this.vertices.get(idD);
Edge edge;
if (qeBorder.contains(qe)) {
oV.setBorder(true);
eV.setBorder(true);
edge = new Edge(i, s, oV, eV, true);
if (s.getLength() < this.threshold) {
this.shortLengths.put(i, edge);
} else {
this.lengths.put(i, edge);