<iframe src="https://www.jsxgraph.uni-bayreuth.de/share/iframe/tschirnhausen-cubic-catacaustic" style="border: 1px solid black; overflow: hidden; width: 550px; aspect-ratio: 55 / 65;" name="JSXGraph example: Tschirnhausen Cubic Catacaustic" allowfullscreen ></iframe>
<div id="board-0-wrapper" class="jxgbox-wrapper " style="width: 100%; "> <div id="board-0" class="jxgbox" style="aspect-ratio: 1 / 1; width: 100%;" data-ar="1 / 1"></div> </div> <script type = "text/javascript"> /* This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/ Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits. */ const BOARDID = 'board-0'; var board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-10, 10, 10, -10], showClearTraces: true, axis: true }); board.suspendUpdate(); var a = board.create('slider', [[-5, 6], [5, 6], [-5, 1, 5]], { name: 'a' }); var cubic = board.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 = board.create('point', [function() { return -a.Value() * 8; }, 0], { name: 'radiant point' }); var reflectionpoint = board.create('glider', [-7, 1, cubic], { name: 'point of reflection' }); var dir = board.create('segment', [radpoint, reflectionpoint], { strokeWidth: 1 }); var infty = board.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 = board.create('line', [reflectionpoint, infty], { strokeWidth: 1, straightFirst: false, trace: true } ); var cataustic = board.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' } ); board.unsuspendUpdate(); </script>
/* This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/ Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits. */ const BOARDID = 'your_div_id'; // Insert your id here! var board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-10, 10, 10, -10], showClearTraces: true, axis: true }); board.suspendUpdate(); var a = board.create('slider', [[-5, 6], [5, 6], [-5, 1, 5]], { name: 'a' }); var cubic = board.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 = board.create('point', [function() { return -a.Value() * 8; }, 0], { name: 'radiant point' }); var reflectionpoint = board.create('glider', [-7, 1, cubic], { name: 'point of reflection' }); var dir = board.create('segment', [radpoint, reflectionpoint], { strokeWidth: 1 }); var infty = board.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 = board.create('line', [reflectionpoint, infty], { strokeWidth: 1, straightFirst: false, trace: true } ); var cataustic = board.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' } ); board.unsuspendUpdate();
<jsxgraph width="100%" aspect-ratio="1 / 1" title="Tschirnhausen Cubic Catacaustic" description="This construction was copied from JSXGraph examples database: BTW HERE SHOULD BE A GENERATED LINKuseGlobalJS="false"> /* This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/ Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits. */ var board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-10, 10, 10, -10], showClearTraces: true, axis: true }); board.suspendUpdate(); var a = board.create('slider', [[-5, 6], [5, 6], [-5, 1, 5]], { name: 'a' }); var cubic = board.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 = board.create('point', [function() { return -a.Value() * 8; }, 0], { name: 'radiant point' }); var reflectionpoint = board.create('glider', [-7, 1, cubic], { name: 'point of reflection' }); var dir = board.create('segment', [radpoint, reflectionpoint], { strokeWidth: 1 }); var infty = board.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 = board.create('line', [reflectionpoint, infty], { strokeWidth: 1, straightFirst: false, trace: true } ); var cataustic = board.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' } ); board.unsuspendUpdate(); </jsxgraph>
// Define the id of your board in BOARDID var board = JXG.JSXGraph.initBoard(BOARDID, { boundingbox: [-10, 10, 10, -10], showClearTraces: true, axis: true }); board.suspendUpdate(); var a = board.create('slider', [[-5, 6], [5, 6], [-5, 1, 5]], { name: 'a' }); var cubic = board.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 = board.create('point', [function() { return -a.Value() * 8; }, 0], { name: 'radiant point' }); var reflectionpoint = board.create('glider', [-7, 1, cubic], { name: 'point of reflection' }); var dir = board.create('segment', [radpoint, reflectionpoint], { strokeWidth: 1 }); var infty = board.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 = board.create('line', [reflectionpoint, infty], { strokeWidth: 1, straightFirst: false, trace: true } ); var cataustic = board.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' } ); board.unsuspendUpdate();
This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License. Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits.