Difference between revisions of "Dependent gliders"

From JSXGraph Wiki
Jump to: navigation, search
 
(6 intermediate revisions by the same user not shown)
Line 17: Line 17:
 
       return;
 
       return;
 
     }
 
     }
    console.log(A.X(), B.X(), C.X());
 
 
   
 
   
 
     if (o==A) {
 
     if (o==A) {
Line 23: Line 22:
 
       B.prepareUpdate().update(true).updateRenderer();
 
       B.prepareUpdate().update(true).updateRenderer();
  
       C.setPositionDirectly(JXG.COORDS_BY_USER, A.X()+3, C.Y());  
+
       C.setPositionDirectly(JXG.COORDS_BY_USER, [A.X()+3, C.Y()]);  
 
       C.prepareUpdate().update().updateRenderer();
 
       C.prepareUpdate().update().updateRenderer();
 
     } else if (o==B) {
 
     } else if (o==B) {
Line 29: Line 28:
 
       A.prepareUpdate().update(true).updateRenderer();
 
       A.prepareUpdate().update(true).updateRenderer();
  
       C.setPositionDirectly(JXG.COORDS_BY_USER, A.X()+3, C.Y());  
+
       C.setPositionDirectly(JXG.COORDS_BY_USER, [A.X()+3, C.Y()]);  
 
       C.prepareUpdate().update().updateRenderer();
 
       C.prepareUpdate().update().updateRenderer();
 
     } else if (o==C) {
 
     } else if (o==C) {
       A.setPositionDirectly(JXG.COORDS_BY_USER, C.X()-3, A.Y());  
+
       A.setPositionDirectly(JXG.COORDS_BY_USER, [C.X()-3, A.Y()]);  
       //A.prepareUpdate().update().updateRenderer();
+
       A.prepareUpdate().update().updateRenderer();
  
 
       B.position = A.position - 0.3;
 
       B.position = A.position - 0.3;
       //B.prepareUpdate().update(true).updateRenderer();
+
       B.prepareUpdate().update(true).updateRenderer();
 
     }  
 
     }  
    console.log("After", A.X(), B.X(), C.X());
 
 
  });
 
  });
 
</jsxgraph>
 
</jsxgraph>
Line 48: Line 46:
 
var P1 = brd.create('point', [4,-1], {name:'', face:'[]'});
 
var P1 = brd.create('point', [4,-1], {name:'', face:'[]'});
 
var li = brd.create('line', [P0,P1]);
 
var li = brd.create('line', [P0,P1]);
var A = brd.create('glider', [0,-1,li]);
+
var A = brd.create('glider', [0,-1,li], {name:'A'});
var B = brd.create('glider', [-3,-1,li]);
+
var B = brd.create('glider', [-3,-1,li], {name:'B'});
var C = brd.create('glider', [ 3,-1,li]);
+
var C = brd.create('glider', [ 3,-1,li], {name:'C'});
brd.addHook(function() {
+
 
    // Find the element that has been dragged
+
brd.on('update', function() {
 
     var o;
 
     var o;
 
     if (typeof brd.touches != 'undefined' && brd.touches.length>0) {
 
     if (typeof brd.touches != 'undefined' && brd.touches.length>0) {
Line 61: Line 59:
 
       return;
 
       return;
 
     }
 
     }
   
+
   
    // A has been dragged  
 
 
     if (o==A) {
 
     if (o==A) {
      // Update the relative position of B between P0 and P1
 
 
       B.position = A.position - 0.3;
 
       B.position = A.position - 0.3;
 
       B.prepareUpdate().update(true).updateRenderer();
 
       B.prepareUpdate().update(true).updateRenderer();
  
      // Update the absolute position of C
+
       C.setPositionDirectly(JXG.COORDS_BY_USER, [A.X()+3, C.Y()]);  
       C.setPositionDirectly(JXG.COORDS_BY_USER, A.X()+3, C.Y());  
 
 
       C.prepareUpdate().update().updateRenderer();
 
       C.prepareUpdate().update().updateRenderer();
     } else if (o==B) { // B has been dragged
+
     } else if (o==B) {
 
       A.position = B.position + 0.3;
 
       A.position = B.position + 0.3;
 
       A.prepareUpdate().update(true).updateRenderer();
 
       A.prepareUpdate().update(true).updateRenderer();
  
       C.setPositionDirectly(JXG.COORDS_BY_USER, A.X()+3, C.Y());  
+
       C.setPositionDirectly(JXG.COORDS_BY_USER, [A.X()+3, C.Y()]);  
 
       C.prepareUpdate().update().updateRenderer();
 
       C.prepareUpdate().update().updateRenderer();
     } else if (o==C) { // C has been dragged
+
     } else if (o==C) {
       A.setPositionDirectly(JXG.COORDS_BY_USER, C.X()-3, A.Y());  
+
       A.setPositionDirectly(JXG.COORDS_BY_USER, [C.X()-3, A.Y()]);  
 
       A.prepareUpdate().update().updateRenderer();
 
       A.prepareUpdate().update().updateRenderer();
  
Line 84: Line 79:
 
       B.prepareUpdate().update(true).updateRenderer();
 
       B.prepareUpdate().update(true).updateRenderer();
 
     }  
 
     }  
  }, 'update');
+
  });
 
 
 
</source>
 
</source>
  
 
[[Category:Examples]]
 
[[Category:Examples]]

Latest revision as of 10:35, 18 June 2013

The underlying JavaScript code

var brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-5,5,5,-5], axis:true});
var P0 = brd.create('point', [-4,-1], {name:'', face:'[]'});
var P1 = brd.create('point', [4,-1], {name:'', face:'[]'});
var li = brd.create('line', [P0,P1]);
var A = brd.create('glider', [0,-1,li], {name:'A'});
var B = brd.create('glider', [-3,-1,li], {name:'B'});
var C = brd.create('glider', [ 3,-1,li], {name:'C'});

brd.on('update', function() {
    var o;
    if (typeof brd.touches != 'undefined' && brd.touches.length>0) {
      o = brd.touches[0].obj;
    } else if (brd.mouse!=null && typeof brd.mouse.obj != 'undefined') {
      o = brd.mouse.obj;
    } else {
      return;
    }
 
    if (o==A) {
      B.position = A.position - 0.3;
      B.prepareUpdate().update(true).updateRenderer();

      C.setPositionDirectly(JXG.COORDS_BY_USER, [A.X()+3, C.Y()]); 
      C.prepareUpdate().update().updateRenderer();
    } else if (o==B) {
      A.position = B.position + 0.3;
      A.prepareUpdate().update(true).updateRenderer();

      C.setPositionDirectly(JXG.COORDS_BY_USER, [A.X()+3, C.Y()]); 
      C.prepareUpdate().update().updateRenderer();
    } else if (o==C) {
      A.setPositionDirectly(JXG.COORDS_BY_USER, [C.X()-3, A.Y()]); 
      A.prepareUpdate().update().updateRenderer();

      B.position = A.position - 0.3;
      B.prepareUpdate().update(true).updateRenderer();
    } 
 });