Tschirnhausen Cubic Catacaustic: Difference between revisions
From JSXGraph Wiki
| A WASSERMANN (talk | contribs) No edit summary | A WASSERMANN (talk | contribs) No edit summary | ||
| Line 11: | Line 11: | ||
| :<math> y = a4t^3 </math> | :<math> y = a4t^3 </math> | ||
| You can drag the ''point of reflection''. | |||
| <jsxgraph width="600" height="600"> | <jsxgraph width="600" height="600"> | ||
| (function(){ | (function(){ | ||
| Line 25: | Line 26: | ||
| var radpoint = brd.create('point',[function(){ return -a.Value()*8;},0],{name:'radiant point'}); | var radpoint = brd.create('point',[function(){ return -a.Value()*8;},0],{name:'radiant point'}); | ||
| var reflectionpoint = brd.create('glider',[-7,1,cubic],{name:'point of reflection' | var reflectionpoint = brd.create('glider',[-7,1,cubic],{name:'point of reflection'}); | ||
| var dir = brd.create('segment',[radpoint,reflectionpoint],{strokeWidth:1}); | var dir = brd.create('segment',[radpoint,reflectionpoint],{strokeWidth:1}); | ||
| var infty = brd.create('point', | var infty = brd.create('point', | ||
| Line 49: | Line 50: | ||
|                   -4, 4 |                   -4, 4 | ||
|                   ], |                   ], | ||
|                   {strokeWidth: |                   {strokeWidth:3, strokeColor:'red'}); | ||
| brd.unsuspendUpdate(); | brd.unsuspendUpdate(); | ||
| })(); | })(); | ||
| Line 70: | Line 71: | ||
| var radpoint = brd.create('point',[function(){ return -a.Value()*8;},0],{name:'radiant point'}); | var radpoint = brd.create('point',[function(){ return -a.Value()*8;},0],{name:'radiant point'}); | ||
| var reflectionpoint = brd.create('glider',[-7,1,cubic],{name:'point of reflection'}); | |||
| var dir = brd.create('segment',[radpoint,reflectionpoint],{strokeWidth:1}); | |||
| var infty = brd.create('point', | |||
|      [ | |||
|        function(){  | |||
|             var a = dir.stdform[1], b = dir.stdform[2], | |||
|                 t = reflectionpoint.position, | |||
|                 u = JXG.Math.Numerics.D(cubic.X)(t),  | |||
|                 v = JXG.Math.Numerics.D(cubic.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 = brd.create('line', | |||
|        [reflectionpoint,infty], | |||
|        {strokeWidth:1, straightFirst:false, trace:true}); | |||
| var cataustic = brd.create('curve', | var cataustic = brd.create('curve', | ||
| Line 76: | Line 95: | ||
|                   -4, 4 |                   -4, 4 | ||
|                   ], |                   ], | ||
|                   {strokeWidth: |                   {strokeWidth:3, strokeColor:'red'}); | ||
| brd.unsuspendUpdate(); | brd.unsuspendUpdate(); | ||
| </source> | </source> | ||
Revision as of 14:15, 13 January 2011
The Tschirnhausen cubic (black curve) is defined parametrically as
- [math]\displaystyle{ x = a3(t^2-3) }[/math]
- [math]\displaystyle{ y = at(t^2-3) }[/math]
Its catcaustic (red curve) with radiant point [math]\displaystyle{ (-8a,p) }[/math] is the semicubical parabola with parametric equations
- [math]\displaystyle{ x = a6(t^2-1) }[/math]
- [math]\displaystyle{ y = a4t^3 }[/math]
You can drag the point of reflection.
References
The underlying JavaScript code
var brd = JXG.JSXGraph.initBoard('jxgbox',{boundingbox:[-10,10,10,-10], keepaspectratio:true, axis:true});
brd.suspendUpdate();
var a = brd.create('slider',[[-5,6],[5,6],[-5,1,5]], {name:'a'});
var cubic = brd.create('curve',
             [function(t){ return a.Value()*3*(t*t-3);},
              function(t){ return a.Value()*t*(t*t-3);},
              -5, 5
             ],
             {strokeWidth:1, strokeColor:'black'});
var radpoint = brd.create('point',[function(){ return -a.Value()*8;},0],{name:'radiant point'});
var reflectionpoint = brd.create('glider',[-7,1,cubic],{name:'point of reflection'});
var dir = brd.create('segment',[radpoint,reflectionpoint],{strokeWidth:1});
var infty = brd.create('point',
     [
       function(){ 
            var a = dir.stdform[1], b = dir.stdform[2],
                t = reflectionpoint.position,
                u = JXG.Math.Numerics.D(cubic.X)(t), 
                v = JXG.Math.Numerics.D(cubic.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 = brd.create('line',
       [reflectionpoint,infty],
       {strokeWidth:1, straightFirst:false, trace:true});
var cataustic = brd.create('curve',
                 [function(t){ return a.Value()*6*(t*t-1);},
                  function(t){ return a.Value()*4*t*t*t;},
                 -4, 4
                 ],
                 {strokeWidth:3, strokeColor:'red'});
brd.unsuspendUpdate();
