| 
				 | 
				
| Line 24: | 
Line 24: | 
 | <script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/prototype.js"></script>  |  | <script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/prototype.js"></script>  | 
 | <script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/jsxgraphcore.js"></script>  |  | <script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/distrib/jsxgraphcore.js"></script>  | 
 |  | <script type="text/javascript" src="http://jsxgraph.uni-bayreuth.de/~alfred/jsxgraph/branches/0.70/src/jsxturtle.js"></script>  | 
 | <form><textarea id="input1" rows=7 cols=35 wrap="off" style="width:300px; float:left;">  |  | <form><textarea id="input1" rows=7 cols=35 wrap="off" style="width:300px; float:left;">  | 
 | function side(size, level) {  |  | function side(size, level) {  | 
| Line 104: | 
Line 105: | 
 | <div id="box" class="jxgbox" style="width:600px; height:600px;"></div>  |  | <div id="box" class="jxgbox" style="width:600px; height:600px;"></div>  | 
 | <script language="JavaScript">  |  | <script language="JavaScript">  | 
 |             var turtleObj = function(board,attributes) {
  |  | var brd = JXG.JSXGraph.initBoard('box', {originX: 300, originY: 300, unitX: 1, unitY: 1});  | 
 |                 this.turtleIsHidden = false;
  |  | var t = new JSXTurtleObj(brd);  | 
 |                 this.board = board;
  |  | 
 |                 if (attributes==null) {
  |  | 
 |                     this.attributes = {
  |  | 
 |                         strokeColor:'#000000'
  |  | 
 |                     };
  |  | 
 |                 } else {
  |  | 
 |                     this.attributes = attributes;
  |  | 
 |                 }
  |  | 
 |                 this.attributes.straightFirst = false;
  |  | 
 |                 this.attributes.straightLast = false;
  |  | 
 |                 this.init();
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.init = function() {
  |  | 
 |                 this.pos = [0,0];
  |  | 
 |                 this.isPenDown = true;
  |  | 
 |                 this.dir = 90;
  |  | 
 |                 this.attributes.curveType = 'plot';
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                        [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |    |  | 
 |                 this.turtle = this.board.createElement('point',this.pos,{fixed:true,name:' ',visible:false});
  |  | 
 |                 this.turtle2 = this.board.createElement('point',[this.pos[0],this.pos[1]+20],{fixed:true,name:' ',visible:false});
  |  | 
 |                 this.arrow = this.board.createElement('line',[this.turtle,this.turtle2],
  |  | 
 |                         {lastArrow:true,strokeColor:'#ff0000',straightFirst:false,straightLast:false});
  |  | 
 |             }
  |  | 
 |    |  | 
 |             turtleObj.prototype.forward = function(len) {
  |  | 
 |                 if (len==0) { return; }
  |  | 
 |                 var dx = -len*Math.cos(this.dir*Math.PI/180.0);
  |  | 
 |                 var dy = len*Math.sin(this.dir*Math.PI/180.0);
  |  | 
 |                 if (!this.turtleIsHidden) {
  |  | 
 |                     var t = this.board.createElement('transform', [dx,dy], {type:'translate'});
  |  | 
 |                     t.applyOnce(this.turtle);
  |  | 
 |                     t.applyOnce(this.turtle2);
  |  | 
 |                 }
  |  | 
 |                 if (this.isPenDown) if (this.curve.dataX.length>=8192) {
  |  | 
 |                     // IE workaround
  |  | 
 |                     this.curve = this.board.createElement('curve',
  |  | 
 |                            [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |                 }
  |  | 
 |                 this.pos[0] += dx;
  |  | 
 |                 this.pos[1] += dy;
  |  | 
 |                 if (this.isPenDown) {
  |  | 
 |                     this.curve.dataX.push(this.pos[0]);
  |  | 
 |                     this.curve.dataY.push(this.pos[1]);
  |  | 
 |                 }
  |  | 
 |             };
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.back = function(len) {
  |  | 
 |                 this.forward(-len);
  |  | 
 |             }
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.right = function(angle) {
  |  | 
 |                 this.dir += angle;
  |  | 
 |                 if (!this.turtleIsHidden) {
  |  | 
 |                     var t = this.board.createElement('transform', [-angle*Math.PI/180.0,this.turtle], {type:'rotate'});
  |  | 
 |                     t.applyOnce(this.turtle2);
  |  | 
 |                 }
  |  | 
 |             }
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.left = function(angle) {
  |  | 
 |                 this.right(-angle);
  |  | 
 |             }
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.penUp = function() {
  |  | 
 |                 this.isPenDown = false;
  |  | 
 |             }
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.penDown = function() {
  |  | 
 |                 this.isPenDown = true;
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                                [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |             }
  |  | 
 |    |  | 
 |             turtleObj.prototype.clean = function() {
  |  | 
 |                 for(var el in this.board.objects) {
  |  | 
 |                     if (this.board.objects[el].type==JXG.OBJECT_TYPE_CURVE) {
  |  | 
 |                         this.board.removeObject(el);
  |  | 
 |                     }
  |  | 
 |                 }
  |  | 
 |             }
  |  | 
 |    |  | 
 |             turtleObj.prototype.clearScreen = function() {
  |  | 
 |                 for(var el in this.board.objects) {
  |  | 
 |                     this.board.removeObject(el);
  |  | 
 |                 }
  |  | 
 |                 this.init();
  |  | 
 |             }
  |  | 
 |    |  | 
 |             turtleObj.prototype.setPos = function(x,y) {
  |  | 
 |                 this.pos = [x,y];
  |  | 
 |                 if (!this.turtleIsHidden) {
  |  | 
 |                     this.turtle.setPositionDirectly(JXG.COORDS_BY_USER,x,y);
  |  | 
 |                     this.turtle2.setPositionDirectly(JXG.COORDS_BY_USER,x,y+20);
  |  | 
 |                     var t = this.board.createElement('transform', 
  |  | 
 |                           [-(this.dir-90)*Math.PI/180.0,this.turtle], {type:'rotate'});
  |  | 
 |                     t.applyOnce(this.turtle2);
  |  | 
 |                 }
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                                [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |             }
  |  | 
 |    |  | 
 |             turtleObj.prototype.setPenSize = function(size) { 
  |  | 
 |                 this.attributes.strokeWidth = size; 
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                                [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.setPenColor = function(colStr) { 
  |  | 
 |                 this.attributes.strokeColor = colStr; 
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                                [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.showTurtle = function() { 
  |  | 
 |                 this.turtleIsHidden = false; 
  |  | 
 |                 this.arrow.setProperty('visible:true');
  |  | 
 |                 this.setPos(this.pos[0],this.pos[1]);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.hideTurtle = function() { 
  |  | 
 |                 this.turtleIsHidden = true;
  |  | 
 |                 this.arrow.setProperty('visible:false');
  |  | 
 |                 this.setPos(this.pos[0],this.pos[1]);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.home= function() { 
  |  | 
 |                 this.pos = [0,0];
  |  | 
 |                 this.setPos(this.pos[0],this.pos[1]);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.fd = function(len) { this.forward(len); };
  |  | 
 |             turtleObj.prototype.bk = function(len) { this.back(len); };
  |  | 
 |             turtleObj.prototype.lt = function(angle) { this.left(angle); };
  |  | 
 |             turtleObj.prototype.rt = function(angle) { this.right(angle); };
  |  | 
 |             turtleObj.prototype.pu = function() { this.penUp(); };
  |  | 
 |             turtleObj.prototype.pd = function() { this.penDown(); };
  |  | 
 |             turtleObj.prototype.ht = function() { this.hideTurtle(); };
  |  | 
 |             turtleObj.prototype.st = function() { this.showTurtle(); };
  |  | 
 |             turtleObj.prototype.cs = function() { this.clearScreen(); };
  |  | 
 |    |  | 
 |             var brd = JXG.JSXGraph.initBoard('box', {originX: 300, originY: 300, unitX: 1, unitY: 1});
  |  | 
 |             var t = new turtleObj(brd);
  |  | 
 |    |  | 
 | function run(nr) {  |  | function run(nr) {  | 
 |    brd.suspendUpdate();  |  |    brd.suspendUpdate();  | 
| Line 271: | 
Line 127: | 
 | 
  |  | 
  | 
 | <source lang="javascript">  |  | <source lang="javascript">  | 
 |             var turtleObj = function(board,attributes) {
  |  | var brd = JXG.JSXGraph.initBoard('box', {originX: 300, originY: 300, unitX: 1, unitY: 1});  | 
 |                 this.turtleIsHidden = false;
  |  | var t = new turtleObj(brd);  | 
 |                 this.board = board;
  |  | 
 |                 if (attributes==null) {
  |  | 
 |                     this.attributes = {
  |  | 
 |                         strokeColor:'#000000'
  |  | 
 |                     };
  |  | 
 |                 } else {
  |  | 
 |                     this.attributes = attributes;
  |  | 
 |                 }
  |  | 
 |                 this.attributes.straightFirst = false;
  |  | 
 |                 this.attributes.straightLast = false;
  |  | 
 |                 this.init();
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.init = function() {
  |  | 
 |                 this.pos = [0,0];
  |  | 
 |                 this.isPenDown = true;
  |  | 
 |                 this.dir = 90;
  |  | 
 |                 this.attributes.curveType = 'plot';
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                        [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |    |  | 
 |                 this.turtle = this.board.createElement('point',this.pos,{fixed:true,name:' ',visible:false});
  |  | 
 |                 this.turtle2 = this.board.createElement('point',[this.pos[0],this.pos[1]+20],{fixed:true,name:' ',visible:false});
  |  | 
 |                 this.arrow = this.board.createElement('line',[this.turtle,this.turtle2],
  |  | 
 |                         {lastArrow:true,strokeColor:'#ff0000',straightFirst:false,straightLast:false});
  |  | 
 |             }
  |  | 
 |    |  | 
 |             turtleObj.prototype.forward = function(len) {
  |  | 
 |                 if (len==0) { return; }
  |  | 
 |                 var dx = -len*Math.cos(this.dir*Math.PI/180.0);
  |  | 
 |                 var dy = len*Math.sin(this.dir*Math.PI/180.0);
  |  | 
 |                 if (!this.turtleIsHidden) {
  |  | 
 |                     var t = this.board.createElement('transform', [dx,dy], {type:'translate'});
  |  | 
 |                     t.applyOnce(this.turtle);
  |  | 
 |                     t.applyOnce(this.turtle2);
  |  | 
 |                 }
  |  | 
 |                 if (this.isPenDown) if (this.curve.dataX.length>=8192) {
  |  | 
 |                     // IE workaround
  |  | 
 |                     this.curve = this.board.createElement('curve',
  |  | 
 |                            [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |                 }
  |  | 
 |                 this.pos[0] += dx;
  |  | 
 |                 this.pos[1] += dy;
  |  | 
 |                 if (this.isPenDown) {
  |  | 
 |                     this.curve.dataX.push(this.pos[0]);
  |  | 
 |                     this.curve.dataY.push(this.pos[1]);
  |  | 
 |                 }
  |  | 
 |             };
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.back = function(len) {
  |  | 
 |                 this.forward(-len);
  |  | 
 |             }
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.right = function(angle) {
  |  | 
 |                 this.dir += angle;
  |  | 
 |                 if (!this.turtleIsHidden) {
  |  | 
 |                     var t = this.board.createElement('transform', [-angle*Math.PI/180.0,this.turtle], {type:'rotate'});
  |  | 
 |                     t.applyOnce(this.turtle2);
  |  | 
 |                 }
  |  | 
 |             }
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.left = function(angle) {
  |  | 
 |                 this.right(-angle);
  |  | 
 |             }
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.penUp = function() {
  |  | 
 |                 this.isPenDown = false;
  |  | 
 |             }
  |  | 
 |             
  |  | 
 |             turtleObj.prototype.penDown = function() {
  |  | 
 |                 this.isPenDown = true;
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                                [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |             }
  |  | 
 |    |  | 
 |             turtleObj.prototype.clean = function() {
  |  | 
 |                 for(var el in this.board.objects) {
  |  | 
 |                     this.board.removeObject(el);
  |  | 
 |                 }
  |  | 
 |                 this.init();
  |  | 
 |             }
  |  | 
 |    |  | 
 |             turtleObj.prototype.setPos = function(x,y) {
  |  | 
 |                 this.pos = [x,y];
  |  | 
 |                 if (!this.turtleIsHidden) {
  |  | 
 |                     this.turtle.setPositionDirectly(JXG.COORDS_BY_USER,x,y);
  |  | 
 |                     this.turtle2.setPositionDirectly(JXG.COORDS_BY_USER,x,y+20);
  |  | 
 |                     var t = this.board.createElement('transform', 
  |  | 
 |                           [-(this.dir-90)*Math.PI/180.0,this.turtle], {type:'rotate'});
  |  | 
 |                     t.applyOnce(this.turtle2);
  |  | 
 |                 }
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                                [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |             }
  |  | 
 |    |  | 
 |             turtleObj.prototype.setPenSize = function(size) { 
  |  | 
 |                 this.attributes.strokeWidth = size; 
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                                [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.setPenColor = function(colStr) { 
  |  | 
 |                 this.attributes.strokeColor = colStr; 
  |  | 
 |                 this.curve = this.board.createElement('curve',
  |  | 
 |                                [[this.pos[0]],[this.pos[1]]],this.attributes);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.showTurtle = function() { 
  |  | 
 |                 this.turtleIsHidden = false; 
  |  | 
 |                 this.arrow.setProperty('visible:true');
  |  | 
 |                 this.setPos(this.pos[0],this.pos[1]);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.hideTurtle = function() { 
  |  | 
 |                 this.turtleIsHidden = true;
  |  | 
 |                 this.arrow.setProperty('visible:false');
  |  | 
 |                 this.setPos(this.pos[0],this.pos[1]);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.home= function() { 
  |  | 
 |                 this.pos = [0,0];
  |  | 
 |                 this.setPos(this.pos[0],this.pos[1]);
  |  | 
 |             };
  |  | 
 |    |  | 
 |             turtleObj.prototype.fd = function(len) { this.forward(len); };
  |  | 
 |             turtleObj.prototype.bk = function(len) { this.back(len); };
  |  | 
 |             turtleObj.prototype.lt = function(angle) { this.left(angle); };
  |  | 
 |             turtleObj.prototype.rt = function(angle) { this.right(angle); };
  |  | 
 |             turtleObj.prototype.pu = function() { this.penUp(); };
  |  | 
 |             turtleObj.prototype.pd = function() { this.penDown(); };
  |  | 
 |             turtleObj.prototype.ht = function() { this.hideTurtle(); };
  |  | 
 |             turtleObj.prototype.st = function() { this.showTurtle(); };
  |  | 
 |             turtleObj.prototype.cs = function() { this.clean(); };
  |  | 
 |    |  | 
 |             var brd = JXG.JSXGraph.initBoard('box', {originX: 300, originY: 300, unitX: 1, unitY: 1});
  |  | 
 |             var t = new turtleObj(brd);
  |  | 
 | 
  |  | 
  | 
 | function run(nr) {  |  | function run(nr) {  |