[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/view View.java, 1.152, 1.153
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2006-09-27 08:36:41
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv987/src/net/sourceforge/bprocessor/gl/view Modified Files: View.java Log Message: Translations and Rotations in scripting Index: View.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/View.java,v retrieving revision 1.152 retrieving revision 1.153 diff -C2 -d -r1.152 -r1.153 *** View.java 20 Sep 2006 11:01:42 -0000 1.152 --- View.java 27 Sep 2006 08:36:38 -0000 1.153 *************** *** 16,20 **** import net.sourceforge.bprocessor.model.CoordinateSystem; import net.sourceforge.bprocessor.model.Defaults; ! import net.sourceforge.bprocessor.model.FullRotate; import net.sourceforge.bprocessor.model.Geometric; import net.sourceforge.bprocessor.model.Geometry; --- 16,20 ---- import net.sourceforge.bprocessor.model.CoordinateSystem; import net.sourceforge.bprocessor.model.Defaults; ! import net.sourceforge.bprocessor.model.AxisRotate; import net.sourceforge.bprocessor.model.Geometric; import net.sourceforge.bprocessor.model.Geometry; *************** *** 29,32 **** --- 29,33 ---- import net.sourceforge.bprocessor.model.Selection; import net.sourceforge.bprocessor.model.Space; + import net.sourceforge.bprocessor.model.TransformStack; import net.sourceforge.bprocessor.model.Translate; import net.sourceforge.bprocessor.model.Vertex; *************** *** 36,40 **** import java.util.ArrayList; - import java.util.Collections; import java.util.HashSet; import java.util.Iterator; --- 37,40 ---- *************** *** 992,995 **** --- 992,1034 ---- } + /** + * + * @param space Space + */ + private void transformTo(Space space) { + if (space.getOwner() != null) { + transformTo(space.getOwner()); + } + transform(space.getTransformations()); + } + + /** + * Apply transformations + * @param transformations List of transformations + */ + private void transform(TransformStack transformations) { + Iterator iter = transformations.stack().iterator(); + while (iter.hasNext()) { + Transform current = (Transform) iter.next(); + if (current instanceof Translate) { + Translate translate = (Translate) current; + gl.glTranslated(translate.tx(), translate.ty(), translate.tz()); + } + if (current instanceof Scale) { + Scale scale = (Scale) current; + gl.glScaled(scale.sx(), scale.sy(), scale.sz()); + } + if (current instanceof Rotate) { + Rotate rotate = (Rotate) current; + gl.glRotated(rotate.rx(), 1, 0, 0); + gl.glRotated(rotate.ry(), 0, 1, 0); + gl.glRotated(rotate.rz(), 0, 0, 1); + } + if (current instanceof AxisRotate) { + AxisRotate rotate = (AxisRotate) current; + gl.glRotated(rotate.angle(), rotate.rx(), rotate.ry(), rotate.rz()); + } + } + } /** *************** *** 1000,1029 **** private void drawSpace(Space space, GLDrawable gld) { gl.glPushMatrix(); ! { ! List transforms = new LinkedList(space.getTransformations()); ! Collections.reverse(transforms); ! Iterator iter = transforms.iterator(); ! while (iter.hasNext()) { ! Transform current = (Transform) iter.next(); ! if (current instanceof Translate) { ! Translate translate = (Translate) current; ! gl.glTranslated(translate.tx(), translate.ty(), translate.tz()); ! } ! if (current instanceof Scale) { ! Scale scale = (Scale) current; ! gl.glScaled(scale.sx(), scale.sy(), scale.sz()); ! } ! if (current instanceof Rotate) { ! Rotate rotate = (Rotate) current; ! gl.glRotated(rotate.rx(), 1, 0, 0); ! gl.glRotated(rotate.ry(), 0, 1, 0); ! gl.glRotated(rotate.rz(), 0, 0, 1); ! } ! if (current instanceof FullRotate) { ! FullRotate rotate = (FullRotate) current; ! gl.glRotated(rotate.angle(), rotate.rx(), rotate.ry(), rotate.rz()); ! } ! } ! } Collection surfaces = space.getSurfaces(); switch (drawMode) { --- 1039,1043 ---- private void drawSpace(Space space, GLDrawable gld) { gl.glPushMatrix(); ! transform(space.getTransformations()); Collection surfaces = space.getSurfaces(); switch (drawMode) { *************** *** 1158,1161 **** --- 1172,1177 ---- while (true) { if (active != null) { + gl.glPushMatrix(); + transformTo(active); Collection cons = active.getConstructors(); Iterator iter = cons.iterator(); *************** *** 1170,1173 **** --- 1186,1190 ---- } } + gl.glPopMatrix(); } else { break; |