Tschirnhausen Cubic Catacaustic: Difference between revisions

From JSXGraph Wiki
No edit summary
No edit summary
Line 4: Line 4:


:<math> y = at(t^2-3) </math>
:<math> y = at(t^2-3) </math>
Its catcaustic (red curve) with radiant point <math>(-8a,p)</math>
Its catacaustic (red curve) with radiant point <math>(-8a,p)</math>
is the semicubical parabola with parametric equations
is the semicubical parabola with parametric equations


Line 11: Line 11:
:<math> y = a4t^3 </math>
:<math> y = a4t^3 </math>


The catacaustic is the envelope of the rays reflected by the Tschirnhausen cubic.
The ray's source is the ''radiant point''.
You can drag the ''point of reflection''.
You can drag the ''point of reflection''.
<jsxgraph width="600" height="600">
<jsxgraph width="600" height="600">
Line 57: Line 59:
===References===
===References===
* [http://mathworld.wolfram.com/TschirnhausenCubicCatacaustic.html Weisstein, Eric W. "Tschirnhausen Cubic Catacaustic." From MathWorld--A Wolfram Web Resource.]
* [http://mathworld.wolfram.com/TschirnhausenCubicCatacaustic.html Weisstein, Eric W. "Tschirnhausen Cubic Catacaustic." From MathWorld--A Wolfram Web Resource.]
* [http://en.wikipedia.org/wiki/Caustic_%28mathematics%29 Wikipedia on Caustics]
===The underlying JavaScript code===
===The underlying JavaScript code===
<source lang="javascript">
<source lang="javascript">

Revision as of 14:19, 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 catacaustic (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]

The catacaustic is the envelope of the rays reflected by the Tschirnhausen cubic. The ray's source is the radiant point. 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();