Difference between revisions of "Tschirnhausen Cubic Catacaustic"

From JSXGraph Wiki
Jump to navigationJump to search
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 16:19, 13 January 2011

The Tschirnhausen cubic (black curve) is defined parametrically as

[math] x = a3(t^2-3) [/math]
[math] y = at(t^2-3) [/math]

Its catacaustic (red curve) with radiant point [math](-8a,p)[/math] is the semicubical parabola with parametric equations

[math] x = a6(t^2-1) [/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.

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();