Tschirnhausen Cubic Catacaustic: Difference between revisions
From JSXGraph Wiki
A WASSERMANN (talk | contribs) No edit summary |
A WASSERMANN (talk | contribs) No edit summary |
||
(37 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
The Tschirnhausen cubic (black curve) is defined parametrically as | |||
:<math> x = t^2 </math> | :<math> x = a3(t^2-3) </math> | ||
:<math> y = at^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 get a feeling why the red curve is called ''envelope'' of the blue line if you drag the ''point of reflection''. | |||
<jsxgraph width="600" height="600"> | <jsxgraph width="600" height="600"> | ||
(function(){ | (function(){ | ||
Line 12: | Line 22: | ||
var cubic = brd.create('curve', | var cubic = brd.create('curve', | ||
[function(t){ return a.Value()* | [function(t){ return a.Value()*3*(t*t-3);}, | ||
function(t){ return a.Value()*t*( | function(t){ return a.Value()*t*(t*t-3);}, | ||
- | -5, 5 | ||
], | ], | ||
{strokeWidth:1, strokeColor:'black'}); | {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(); | brd.unsuspendUpdate(); | ||
})(); | })(); | ||
Line 22: | Line 59: | ||
===References=== | ===References=== | ||
* [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"> | ||
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(); | |||
</source> | </source> | ||
[[Category:Examples]] | [[Category:Examples]] | ||
[[Category:Curves]] | [[Category:Curves]] |
Latest revision as of 14:26, 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 get a feeling why the red curve is called envelope of the blue line if you drag the point of reflection.
References
- Weisstein, Eric W. "Tschirnhausen Cubic Catacaustic." From MathWorld--A Wolfram Web Resource.
- Wikipedia on Caustics
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();