# Difference between revisions of "Tschirnhausen Cubic Catacaustic"

The Tschirnhausen cubic (black curve) is defined parametrically as

$x = a3(t^2-3)$
$y = at(t^2-3)$

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

$x = a6(t^2-1)$
$y = a4t^3$

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.

### 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 reflectionpoint = brd.create('glider',[-7,1,cubic],{name:'point of reflection'});
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();