From 49c6b2494c189dc37d2a48e2182aebdfc084056e Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 15 Dec 2007 17:57:11 -0800 Subject: [PATCH] checkpoint darcs-hash:20071216015711-5007d-c9c25c67a5e02113cebc22bc52fdc8ac70115886.gz --- src/edu/berkeley/qfat/Main.java | 2 +- src/edu/berkeley/qfat/Mesh.java | 14 ++++++++------ src/edu/berkeley/qfat/MeshViewer.java | 4 ++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/edu/berkeley/qfat/Main.java b/src/edu/berkeley/qfat/Main.java index 82ca36c..b1cef41 100644 --- a/src/edu/berkeley/qfat/Main.java +++ b/src/edu/berkeley/qfat/Main.java @@ -247,6 +247,7 @@ public class Main extends MeshViewer { // translate to match centroid goal.transform(Matrix.translate(tile.centroid().minus(goal.centroid()))); + goal.makeVerticesImmutable(); //tx.e2.shatter(); //tx.e3.shatter(); @@ -265,7 +266,6 @@ public class Main extends MeshViewer { tile.score_against = goal; goal.score_against = tile; - tile.tilemesh = true; } public synchronized void breakit() { diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index c057f33..32d1aea 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -17,18 +17,19 @@ public class Mesh implements Iterable { private RTree tris = new RTree(); private PointSet vertices = new PointSet(); - public boolean tilemesh = false; + public boolean immutableVertices; public boolean ignorecollision = false; public Mesh score_against = null; public double score = 0; + + public Mesh(boolean immutableVertices) { this.immutableVertices = immutableVertices; } + + public void makeVerticesImmutable() { this.immutableVertices = true; } public float score() { return (float)score; } public int size() { return vertices.size(); } public Iterable vertices() { return vertices; } - - public Iterator iterator() { - return tris.iterator(); - } + public Iterator iterator() { return tris.iterator(); } public void rebindPoints() { // unbind all points @@ -213,7 +214,7 @@ public class Mesh implements Iterable { } public void computeError() { if (quadric_count == 0) { - if (!tilemesh) { + if (immutableVertices) { } else if (nearest_in_other_mesh == null) { if (score_against != null) { Vertex ne = score_against.nearest(p); @@ -274,6 +275,7 @@ public class Mesh implements Iterable { /** does NOT update bound pairs! */ public boolean transform(Matrix m) { + if (immutableVertices) throw new Error(); unApplyQuadricToNeighbor(); Point oldp = this.p; try { diff --git a/src/edu/berkeley/qfat/MeshViewer.java b/src/edu/berkeley/qfat/MeshViewer.java index 9bed900..288f7f9 100644 --- a/src/edu/berkeley/qfat/MeshViewer.java +++ b/src/edu/berkeley/qfat/MeshViewer.java @@ -12,8 +12,8 @@ import edu.berkeley.qfat.geom.Point; public class MeshViewer implements GLEventListener, MouseListener, MouseMotionListener, KeyListener, MouseWheelListener { - public Mesh tile = new Mesh(); - public Mesh goal = new Mesh(); + public Mesh tile = new Mesh(false); + public Mesh goal = new Mesh(false); public Matrix[] translations; public Mesh.Vertex[] points; -- 1.7.10.4