Conic sections: Difference between revisions

From JSXGraph Wiki
No edit summary
No edit summary
Line 53: Line 53:
var C = brd3.create('point',[0,-1]);
var C = brd3.create('point',[0,-1]);
var hyp = brd3.create('hyperbola',[A,B,C]);
var hyp = brd3.create('hyperbola',[A,B,C]);
var radpoint = A;
var reflectionpoint = brd3.create('glider',[-7,1,hyp],{name:'point of reflection'});
var dir = brd3.create('segment',[radpoint,reflectionpoint],{strokeWidth:1});
var infty = brd3.create('point',
    [
      function(){
            var a = dir.stdform[1], b = dir.stdform[2],
                t = reflectionpoint.position,
                u = JXG.Math.Numerics.D(hyp.X)(t),
                v = JXG.Math.Numerics.D(hyp.Y)(t),
                dirx = a*v*v-2*b*u*v-a*u*u,
                diry = b*u*u-2*a*u*v-b*v*v;
            return [0, diry, -dirx]; 
      }
    ],{name:'', visible:false});
var reflection = brd3.create('line',
      [reflectionpoint,infty],
      {strokeWidth:1, straightFirst:false, trace:true});
})();
})();
</jsxgraph>
</jsxgraph>
Line 115: Line 95:
var C = brd5.create('point',[0,-1]);
var C = brd5.create('point',[0,-1]);
var par = brd5.create('parabola',[C,line]);
var par = brd5.create('parabola',[C,line]);
var radpoint = C;
var reflectionpoint = brd5.create('glider',[-7,1,par],{name:'point of reflection'});
var dir = brd5.create('segment',[radpoint,reflectionpoint],{strokeWidth:1});
var infty = brd5.create('point',
    [
      function(){
            var a = dir.stdform[1], b = dir.stdform[2],
                t = reflectionpoint.position,
                u = JXG.Math.Numerics.D(par.X)(t),
                v = JXG.Math.Numerics.D(par.Y)(t),
                dirx = a*v*v-2*b*u*v-a*u*u,
                diry = b*u*u-2*a*u*v-b*v*v;
            return [0, diry, -dirx]; 
      }
    ],{name:'', visible:false});
var reflection = brd5.create('line',
      [reflectionpoint,infty],
      {strokeWidth:1, straightFirst:false, trace:true});
})();
})();
</jsxgraph>
</jsxgraph>

Revision as of 16:06, 14 January 2011

Ellipse

The input elements for an ellipse are either

  • three points: the two foci and a point on the ellipse
  • two point and a number: the two foci and the length of the major axis (maybe a function, too).

var brd1=JXG.JSXGraph.initBoard('jxgbox1',{boundingbox:[-3,3,3,-3], keepaspectratio:true});

var A = brd1.create('point',[-1,1]);
var B = brd1.create('point',[1,1]);
var C = brd1.create('point',[0,-1]);
var ell = brd1.create('ellipse',[A,B,C]);

var brd2=JXG.JSXGraph.initBoard('jxgbox2',{boundingbox:[-3,3,3,-3], keepaspectratio:true});

var A = brd2.create('point',[-1,0]);
var B = brd2.create('point',[1,0]);
var s = brd2.create('slider',[[-1,-2],[1,-2],[0,4,10]]);
var ell = brd2.create('ellipse',[A,B,function(){return s.Value();}]);

Hyperbola

The input elements for a hyperbola are either

  • three points: the two foci and a point on the hyperbola
  • two point and a number: the two foci and the length of the major axis (maybe a function, too).

var brd3=JXG.JSXGraph.initBoard('jxgbox3',{boundingbox:[-3,3,3,-3], keepaspectratio:true});

var A = brd3.create('point',[0,1]);
var B = brd3.create('point',[1,1]);
var C = brd3.create('point',[0,-1]);
var hyp = brd3.create('hyperbola',[A,B,C]);

var brd4=JXG.JSXGraph.initBoard('jxgbox4',{boundingbox:[-3,3,3,-3], keepaspectratio:true});

var A = brd4.create('point',[-1,0]);
var B = brd4.create('point',[1,0]);
var s = brd4.create('slider',[[-1,-2],[1,-2],[0,0.5,1]]);
var hyp = brd4.create('hyperbola',[A,B,function(){return s.Value();}]);

Parabola

The input elements for a parabola are

  • a point and a line: focus and the directrix

var brd5=JXG.JSXGraph.initBoard('jxgbox5',{boundingbox:[-3,3,3,-3], keepaspectratio:true});

var A = brd5.create('point',[-1,1]);
var B = brd5.create('point',[1,1]);
var line = brd5.create('line',[A,B]);
var C = brd5.create('point',[0,-1]);
var par = brd5.create('parabola',[C,line]);

Conic section through five points

var brd6=JXG.JSXGraph.initBoard('jxgbox6',{boundingbox:[-3,3,3,-3], keepaspectratio:true});

var A = brd6.create('point',[0.55,0]);
var B = brd6.create('point',[1,1]);
var C = brd6.create('point',[2,-1]);
var D = brd6.create('point',[2,2]);
var E = brd6.create('point',[0.3,-2]);
var con = brd6.create('conic',[A,B,C,D,E]);