Difference between revisions of "Trochoid"

From JSXGraph Wiki
Jump to: navigation, search
Line 7: Line 7:
 
board = JXG.JSXGraph.initBoard('jsxgbox', {boundingbox:[-10,10,10,-10], axis:true});
 
board = JXG.JSXGraph.initBoard('jsxgbox', {boundingbox:[-10,10,10,-10], axis:true});
 
board.suspendUpdate();
 
board.suspendUpdate();
 +
var D = JXG.Math.Numerics.D;
 
var a = board.create('slider', [[1,-1],[8,-1],[-5,1,5]], {style:6,name:'a'});
 
var a = board.create('slider', [[1,-1],[8,-1],[-5,1,5]], {style:6,name:'a'});
 
var b = board.create('slider', [[1,-2],[8,-2],[-5,1,5]], {style:6,name:'b'});
 
var b = board.create('slider', [[1,-2],[8,-2],[-5,1,5]], {style:6,name:'b'});
Line 14: Line 15:
 
   
 
   
 
var dualCurve = function(x,y,board) {
 
var dualCurve = function(x,y,board) {
     var X = function(phi) { return board.D(y)(phi)/(y(phi)*board.D(x)(phi)-x(phi)*board.D(y)(phi)); }
+
     var X = function(phi) { return D(y)(phi)/(y(phi)*D(x)(phi)-x(phi)*D(y)(phi)); }
     var Y = function(phi) { return board.D(x)(phi)/(x(phi)*board.D(y)(phi)-y(phi)*board.D(x)(phi)); }
+
     var Y = function(phi) { return D(x)(phi)/(x(phi)*D(y)(phi)-y(phi)*D(x)(phi)); }
 
     return [X,Y];
 
     return [X,Y];
 
}
 
}

Revision as of 17:11, 20 February 2013

The Trochoid curve (blue) and its dual curve (red). The equation of the trochoid is

[math]x = a\phi-b\sin(\phi)[/math]
[math]y = a-b\cos(\phi)[/math]

References

The underlying JavaScript code

board = JXG.JSXGraph.initBoard('jsxgbox', {boundingbox:[-10,10,10,-10], axis:true});
board.suspendUpdate();
var a = board.create('slider', [[1,-1],[8,-1],[-5,1,5]], {style:6,name:'a'});
var b = board.create('slider', [[1,-2],[8,-2],[-5,1,5]], {style:6,name:'b'});
var x = function(phi) { return a.Value()*phi-b.Value()*Math.sin(phi); }
var y = function(phi) { return a.Value()-b.Value()*Math.cos(phi); }
var c1 = board.create('curve', [x,y,-Math.PI*4,Math.PI*4],{strokeWidth:3});
 
var dualCurve = function(x,y,board) {
    var X = function(phi) { return board.D(y)(phi)/(y(phi)*board.D(x)(phi)-x(phi)*board.D(y)(phi)); }
    var Y = function(phi) { return board.D(x)(phi)/(x(phi)*board.D(y)(phi)-y(phi)*board.D(x)(phi)); }
    return [X,Y];
}
var dual = dualCurve(x,y,board);
var c2 = board.create('curve', [dual[0],dual[1],-Math.PI*1,Math.PI*1],{strokeWidth:3, strokeColor:'red'});
board.unsuspendUpdate();