Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv987/src/net/sourceforge/bprocessor/gl/tool
Modified Files:
SpaceTool.java
Log Message:
Translations and Rotations in scripting
Index: SpaceTool.java
===================================================================
RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/SpaceTool.java,v
retrieving revision 1.41
retrieving revision 1.42
diff -C2 -d -r1.41 -r1.42
*** SpaceTool.java 26 Sep 2006 09:52:29 -0000 1.41
--- SpaceTool.java 27 Sep 2006 08:36:38 -0000 1.42
***************
*** 32,35 ****
--- 32,36 ----
import net.sourceforge.bprocessor.gl.GLView;
+ import net.sourceforge.bprocessor.model.AxisRotate;
import net.sourceforge.bprocessor.gui.PopupMenu;
import net.sourceforge.bprocessor.model.ClippingPlane;
***************
*** 41,44 ****
--- 42,47 ----
import net.sourceforge.bprocessor.model.Space;
import net.sourceforge.bprocessor.model.Surface;
+ import net.sourceforge.bprocessor.model.TransformStack;
+ import net.sourceforge.bprocessor.model.Translate;
import net.sourceforge.bprocessor.model.Vertex;
import net.sourceforge.bprocessor.model.Geometry;
***************
*** 58,61 ****
--- 61,68 ----
/** The logger */
private static Logger log = Logger.getLogger(SpaceTool.class);
+
+ /** TransformStack */
+ private TransformStack transform;
+
/**
* Construct the SpaceTool
***************
*** 590,594 ****
public Object evaluate(String value) {
!
HashMap globals = Project.getInstance().getGlobals().environment();
globals.put("echo", new Builtin() {
--- 597,601 ----
public Object evaluate(String value) {
! transform = new TransformStack();
HashMap globals = Project.getInstance().getGlobals().environment();
globals.put("echo", new Builtin() {
***************
*** 615,618 ****
--- 622,626 ----
Double z = (Double) env.get(2);
Vertex result = new Vertex(x.doubleValue(), y.doubleValue(), z.doubleValue());
+ result = transform.transform(result);
stack.push(result);
}
***************
*** 639,644 ****
}
});
!
!
String script = Project.getInstance().getScript();
--- 647,700 ----
}
});
! globals.put("contour", new Builtin() {
! public void evaluate(Environment env, Stack stack) {
! Vertex previous = (Vertex) env.get(env.length() - 1);
! for (int i = 0; i < env.length(); i++) {
! Vertex current = (Vertex) env.get(i);
! stack.push(new Edge(previous, current));
! previous = current;
! }
! }
! });
! globals.put("translate", new Builtin() {
! public void evaluate(Environment env, Stack stack) {
! Double x = (Double) env.get(0);
! Double y = (Double) env.get(1);
! Double z = (Double) env.get(2);
! transform.push(
! new Translate(x.doubleValue(), y.doubleValue(), z.doubleValue())
! );
! }
! });
! globals.put("rotate", new Builtin() {
! public void evaluate(Environment env, Stack stack) {
! Double a = (Double) env.get(0);
! Double x = (Double) env.get(1);
! Double y = (Double) env.get(2);
! Double z = (Double) env.get(3);
! transform.push(
! new AxisRotate(a.doubleValue(), x.doubleValue(), y.doubleValue(), z.doubleValue())
! );
! }
! });
! globals.put("extrude", new Builtin() {
! public void evaluate(Environment env, Stack stack) {
! Surface surface = (Surface) env.get(0);
! Double distance = (Double) env.get(1);
! HashSet sides = new HashSet();
! Project.getInstance().getActiveSpace().add(surface);
! Surface top = surface.extrude(distance.doubleValue(), sides);
! Project.getInstance().getActiveSpace().remove(surface);
! stack.push(surface);
! Iterator iter = sides.iterator();
! while (iter.hasNext()) {
! Surface current = (Surface) iter.next();
! Project.getInstance().getActiveSpace().remove(current);
! stack.push(current);
! }
! Project.getInstance().getActiveSpace().remove(top);
! stack.push(top);
! }
! });
String script = Project.getInstance().getScript();
|