goal.ignorecollision = true;
// rotate to align major axis -- this probably needs to be done by a human.
- goal.transform(new Matrix(new Vec(0, 0, 1), (float)(Math.PI/2)));
+ goal.transform(Matrix.rotate(new Vec(0, 0, 1), (float)(Math.PI/2)));
float goal_width = goal.diagonal().dot(new Vec(1, 0, 0));
float goal_height = goal.diagonal().dot(new Vec(0, 1, 0));
translations = new Matrix[] {
- new Matrix(new Vec(lshift, depth, halfup)),
- new Matrix(new Vec(rshift, depth, halfup)),
- new Matrix(new Vec(lshift, -depth, halfup)),
- new Matrix(new Vec(rshift, -depth, halfup)),
+ Matrix.translate(new Vec(lshift, depth, halfup)),
+ Matrix.translate(new Vec(rshift, depth, halfup)),
+ Matrix.translate(new Vec(lshift, -depth, halfup)),
+ Matrix.translate(new Vec(rshift, -depth, halfup)),
/*
- new Matrix(new Vec(0, depth, halfup)),
- new Matrix(new Vec(0, -depth, halfup)),
+ Matrix.translate(new Vec(0, depth, halfup)),
+ Matrix.translate(new Vec(0, -depth, halfup)),
*/
- new Matrix(new Vec(lshift, 0, height)),
- new Matrix(new Vec(rshift, 0, height)),
- new Matrix(new Vec(lshift, 0, -height)),
- new Matrix(new Vec(rshift, 0, -height)),
+ Matrix.translate(new Vec(lshift, 0, height)),
+ Matrix.translate(new Vec(rshift, 0, height)),
+ Matrix.translate(new Vec(lshift, 0, -height)),
+ Matrix.translate(new Vec(rshift, 0, -height)),
- new Matrix(new Vec( width, 0, 0)),
- new Matrix(new Vec(-width, 0, 0)),
+ Matrix.translate(new Vec( width, 0, 0)),
+ Matrix.translate(new Vec(-width, 0, 0)),
};
goal.transform(Matrix.scale(factor));
// translate to match centroid
- goal.transform(new Matrix(tile.centroid().minus(goal.centroid())));
+ goal.transform(Matrix.translate(tile.centroid().minus(goal.centroid())));
//tx.e2.shatter();
//tx.e3.shatter();
int oldverts = verts;
System.out.println("doubling vertices.");
PriorityQueue<Mesh.E> es = new PriorityQueue<Mesh.E>();
- for(Mesh.E e : tile.edges()) es.add(e);
+ for(Mesh.T t : tile) {
+ es.add(t.e1());
+ es.add(t.e2());
+ es.add(t.e3());
+ }
for(int i=0; i<oldverts; i++) {
Mesh.E e = es.poll();
verts++;
System.out.println("temp="+temp + " ratio="+(Math.ceil(ratio*100)) + " " +
"points_per_second=" +
(count*1000)/((double)(System.currentTimeMillis()-then)));
- tile.rebuildPointSet();
+ tile.rebuild();
repaint();
//breakit();
repaint();
tile.recomputeAllFundamentalQuadrics();
repaint();
goal.applyQuadricToNeighborAll();
+
+ safeTriangles.clear();
+ for(Mesh.T t : tile) if (t.shouldBeDrawn()) safeTriangles.add(t);
}
}
}
+
public static void main(String[] s) throws Exception {
StlFile stlf = new StlFile();
stlf.load("fish.stl");