[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/view Display.java, 1.46, 1.47
Status: Pre-Alpha
Brought to you by:
henryml
From: rimestad <rim...@us...> - 2007-11-05 18:12:11
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv9090/src/net/sourceforge/bprocessor/gl/view Modified Files: Display.java Log Message: instance transformations used on gl before instance drawing Index: Display.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/Display.java,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** Display.java 2 Nov 2007 12:51:29 -0000 1.46 --- Display.java 5 Nov 2007 18:12:12 -0000 1.47 *************** *** 40,43 **** --- 40,44 ---- import net.sourceforge.bprocessor.model.Space; import net.sourceforge.bprocessor.model.Surface; + import net.sourceforge.bprocessor.model.TransformStack; import net.sourceforge.bprocessor.model.Vertex; *************** *** 786,794 **** private static void draw(Space space, boolean inside) { ! if (space.isUnion()) { ! CoordinateSystem cs = space.getCoordinateSystems().iterator().next(); ! Vertex translation = cs.center(); ! gl.glPushMatrix(); ! gl.glTranslated(translation.getX(), translation.getY(), translation.getZ()); } if (space.isLocked() && USEDL) { --- 787,792 ---- private static void draw(Space space, boolean inside) { ! if (space.isInstance()) { ! translateToCoordinatesystem(space); } if (space.isLocked() && USEDL) { *************** *** 1033,1040 **** draw(current, inside || (current == active)); } ! if (space.isUnion()) { gl.glPopMatrix(); } } private static void hilite(Collection<Geometric> geometrics) { --- 1031,1060 ---- draw(current, inside || (current == active)); } ! if (space.isInstance()) { gl.glPopMatrix(); } } + + /** + * @param space + */ + private static void translateToCoordinatesystem(Space space) { + TransformStack ts = space.getTransformations(); + Vertex center = ts.transform(new Vertex(0, 0, 0)); + Vertex i = ts.transform(new Vertex(1, 0, 0)).minus(center); + Vertex j = ts.transform(new Vertex(0, 1, 0)).minus(center); + Vertex k = ts.transform(new Vertex(0, 0, 1)).minus(center); + + //CoordinateSystem cs = space.getCoordinateSystems().iterator().next(); + //Vertex translation = cs.center(); + gl.glPushMatrix(); + double[] matrix = new double[]{ + i.getX(), i.getY(), i.getZ(), 0, + j.getX(), j.getY(), j.getZ(), 0, + k.getX(), k.getY(), k.getZ(), 0, + center.getX(), center.getY(), center.getZ(), 1}; + gl.glMultMatrixd(matrix, 0); + //gl.glTranslated(translation.getX(), translation.getY(), translation.getZ()); + } private static void hilite(Collection<Geometric> geometrics) { *************** *** 1060,1064 **** if (current instanceof Space) { Space space = (Space) current; ! Collection<Surface> envelope = new LinkedList(space.getEnvelope()); if (envelope.isEmpty()) { --- 1080,1086 ---- if (current instanceof Space) { Space space = (Space) current; ! if (space.isInstance()) { ! translateToCoordinatesystem(space); ! } Collection<Surface> envelope = new LinkedList(space.getEnvelope()); if (envelope.isEmpty()) { *************** *** 1068,1071 **** --- 1090,1096 ---- Collection<Edge> edges = Surface.edges(envelope); paintEdges(edges, redish, 2.0f); + if (space.isInstance()) { + gl.glPopMatrix(); + } } } |