// translate to match centroid
goal.transform(Matrix.translate(tile.centroid().minus(goal.centroid())));
+ goal.makeVerticesImmutable();
//tx.e2.shatter();
//tx.e3.shatter();
tile.score_against = goal;
goal.score_against = tile;
- tile.tilemesh = true;
}
public synchronized void breakit() {
int count = 0;
long then = System.currentTimeMillis();
- for(int i=0; i<100; i++) {
+ for(int i=0; i<40; i++) {
if (anneal) {
count++;
Mesh.Vertex v = pts[Math.abs(random.nextInt()) % pts.length];
System.out.println("temp="+temp + " ratio="+(Math.ceil(ratio*100)) + " " +
"points_per_second=" +
(count*1000)/((double)(System.currentTimeMillis()-then)));
- tile.rebuild();
- repaint();
- //breakit();
- repaint();
- goal.unApplyQuadricToNeighborAll();
+
+ for(Mesh.Vertex p : tile.vertices()) p.recomputeFundamentalQuadric();
repaint();
- tile.recomputeAllFundamentalQuadrics();
+ for(Mesh.Vertex p : goal.vertices()) p.recomputeFundamentalQuadric();
repaint();
- goal.applyQuadricToNeighborAll();
- safeTriangles.clear();
- for(Mesh.T t : tile) if (t.shouldBeDrawn()) safeTriangles.add(t);
+ synchronized(safeTriangles) {
+ safeTriangles.clear();
+ for(Mesh.T t : tile) if (t.shouldBeDrawn()) safeTriangles.add(t);
+ }
}
}
}