From 8322dacfd8a8fa0bc591012ee3a5f59775ce1334 Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 15 Dec 2007 18:36:53 -0800 Subject: [PATCH] checkpoint darcs-hash:20071216023653-5007d-ebe6a1cff2a53d0d4eed04a1a8ebd4715cac5b64.gz --- src/edu/berkeley/qfat/Main.java | 7 ++---- src/edu/berkeley/qfat/Mesh.java | 53 ++++++++------------------------------- 2 files changed, 13 insertions(+), 47 deletions(-) diff --git a/src/edu/berkeley/qfat/Main.java b/src/edu/berkeley/qfat/Main.java index b1cef41..6818bba 100644 --- a/src/edu/berkeley/qfat/Main.java +++ b/src/edu/berkeley/qfat/Main.java @@ -386,7 +386,7 @@ public class Main extends MeshViewer { 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]; @@ -398,10 +398,7 @@ public class Main extends MeshViewer { 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(); diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index 8f3e6ab..1d842f7 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -18,9 +18,9 @@ public class Mesh implements Iterable { private PointSet vertices = new PointSet(); public boolean immutableVertices; - public boolean ignorecollision = false; - public Mesh score_against = null; - public double score = 0; + public boolean ignorecollision = false; + public Mesh score_against = null; + public double score = 0; public Mesh(boolean immutableVertices) { this.immutableVertices = immutableVertices; } @@ -47,35 +47,16 @@ public class Mesh implements Iterable { } public void unApplyQuadricToNeighborAll() { - HashSet done = new HashSet(); - for(T t : this) - for(Vertex p : new Vertex[] { t.v1(), t.v2(), t.v3() }) { - if (done.contains(p)) continue; - done.add(p); - p.unApplyQuadricToNeighbor(); - } + for(Vertex p : vertices) + p.unApplyQuadricToNeighbor(); } public void recomputeAllFundamentalQuadrics() { - HashSet done = new HashSet(); - for(T t : this) - for(Vertex p : new Vertex[] { t.v1(), t.v2(), t.v3() }) { - if (done.contains(p)) continue; - done.add(p); - p.recomputeFundamentalQuadric(); - } + for(Vertex p : vertices) + p.recomputeFundamentalQuadric(); } - public float applyQuadricToNeighborAll() { - int num = 0; - double dist = 0; - HashSet done = new HashSet(); - for(T t : this) - for(Vertex p : new Vertex[] { t.v1(), t.v2(), t.v3() }) { - if (done.contains(p)) continue; - done.add(p); - p.applyQuadricToNeighbor(); - - } - return (float)(dist/num); + public void applyQuadricToNeighborAll() { + for(Vertex p : vertices) + p.applyQuadricToNeighbor(); } public void transform(Matrix m) { @@ -335,6 +316,7 @@ public class Mesh implements Iterable { return true; return false; } + public void unbind() { bound_to = this; binding = Matrix.ONE; } public void bind(Vertex p) { bind(p, Matrix.ONE); } public void bind(Vertex p, Matrix binding) { @@ -403,20 +385,7 @@ public class Mesh implements Iterable { public boolean intersects(T t) { return t.intersects(p1.p, p2.p); } public float comparator() { Vertex nearest = score_against.nearest(midpoint()); - //if (t==null) return length(); - /* - double ang = Math.abs(crossAngle()); - float minangle = (float)(Math.PI * 0.9); - if (ang > minangle) - return 300; - */ - /* - if ((length() * length()) / t.area() > 10) - return (float)(length()*Math.sqrt(t.area())); - return length()*t.area(); - */ return (float)Math.max(length(), midpoint().distance(nearest.p)); - //return length(); } public int compareTo(E e) { return e.comparator() > comparator() ? 1 : -1; -- 1.7.10.4