X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2FMesh.java;h=d56e2a0d639a827160e9adbd35611e0d7515c21e;hp=fd73795255f4915d2c1eff3c8d4e2ac1b80ea99f;hb=2a2e64829786ee415fd0c0f16957c55e174b793b;hpb=5360ba25cbb730399bf1153292e97cf070a7bec2 diff --git a/src/edu/berkeley/qfat/Mesh.java b/src/edu/berkeley/qfat/Mesh.java index fd73795..d56e2a0 100644 --- a/src/edu/berkeley/qfat/Mesh.java +++ b/src/edu/berkeley/qfat/Mesh.java @@ -19,6 +19,47 @@ public class Mesh implements Iterable { private RTree triangles = new RTree(); private PointSet vertices = new PointSet(); + + public boolean option_wireframe = false; + public boolean option_errorNormals = false; + + public void render(GL gl, Matrix m) { + if (option_wireframe) { + gl.glDisable(GL.GL_LIGHTING); + gl.glBegin(GL.GL_LINES); + gl.glColor3f(1, 1, 1); + for (T t : this) { + m.times(t.e1().p1.goodp).glVertex(gl); + m.times(t.e1().p2.goodp).glVertex(gl); + m.times(t.e2().p1.goodp).glVertex(gl); + m.times(t.e2().p2.goodp).glVertex(gl); + m.times(t.e3().p1.goodp).glVertex(gl); + m.times(t.e3().p2.goodp).glVertex(gl); + } + gl.glEnd(); + gl.glEnable(GL.GL_LIGHTING); + return; + } + for(T t : this) { + gl.glColor4f((float)(0.25+(0.05*t.color)), + (float)(0.25+(0.05*t.color)), + (float)(0.75+(0.05*t.color)), + (float)0.3); + t.glTriangle(gl, m); + } + if (option_errorNormals) + for(T t : this) + for(Mesh.Vertex p : new Mesh.Vertex[] { t.v1(), t.v2(), t.v3() }) { + if (p.ok) { + gl.glBegin(GL.GL_LINES); + gl.glColor3f(1, 1, 1); + p.p.glVertex(gl); + p.p.plus(p.norm().times((float)p.error()*10)).glVertex(gl); + gl.glEnd(); + } + } + } + public boolean immutableVertices; public Mesh error_against = null; public double error = 0;