}
}
- //xMesh.Vert mid = lbf.getE(mbn).shatter();
+ //xMesh.Vertex mid = lbf.getE(mbn).shatter();
// rescale to match volume
float factor = (float)Math.pow(tile.volume() / goal.volume(), 1.0/3.0);
// 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() {
tile.rebindPoints();
}
- public synchronized void rand(float temp, Mesh.Vert p) {
+ public synchronized void rand(float temp, Mesh.Vertex p) {
//p.reComputeError();
p.reComputeErrorAround();
temp = temp * gamma;
- HashSet<Mesh.Vert> hs = new HashSet<Mesh.Vert>();
- for(Mesh.Vert p : tile.vertices()) hs.add(p);
- Mesh.Vert[] pts = (Mesh.Vert[])hs.toArray(new Mesh.Vert[0]);
+ HashSet<Mesh.Vertex> hs = new HashSet<Mesh.Vertex>();
+ for(Mesh.Vertex p : tile.vertices()) hs.add(p);
+ Mesh.Vertex[] pts = (Mesh.Vertex[])hs.toArray(new Mesh.Vertex[0]);
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.Vert v = pts[Math.abs(random.nextInt()) % pts.length];
+ Mesh.Vertex v = pts[Math.abs(random.nextInt()) % pts.length];
rand(temp,v);
}
Thread.yield();
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();
repaint();
tile.recomputeAllFundamentalQuadrics();