Parabola

From JSXGraph Wiki
Revision as of 14:11, 15 January 2021 by A WASSERMANN (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This is an example for JSXGraph with two boards and so called hooks into HTML. That means the numbers below a, b, and c are updated if the points A, B, and C are dragged. And other way round, these numbers are editable.

See Slider and function plot for an easier example howto plot a parabola.

a b c

The underlying JavaScript code

<div id="box2" class='jxgbox' style="width:375px; height:150px;"></div>

<table style="border: 0px solid black; text-align: center" width="500px">
<tr>
  <th style="border: 1px solid black" width="100px">a</th>
  <th style="border: 1px solid black" width="100px">b</th>
  <th style="border: 1px solid black" width="100px">c</th>
</tr>
<tr>
  <td><input type="text" id="print_a" size="2" maxlength="7" 
    style="border:none; text-align:right; font-size:1.2em; "
    onKeyUp="board2.select('A').moveTo([parseFloat(this.value),0]); board2.update(); board.update();" onfocus="hook=false;" onblur="hook=true"
  ></td>
  <td><input type="text" id="print_b" size="2" maxlength="7" 
    style="border:none; text-align:right; font-size:1.2em; "
    onKeyUp="board2.select('B').moveTo([parseFloat(this.value),0]); board2.update(); board.update();" onfocus="hook=false;" onblur="hook=true"
  ></td>
  <td><input type="text" id="print_c" size="2" maxlength="7" 
    style="border:none; text-align:right; font-size:1.2em; "
    onKeyUp="board2.select('C').moveTo([parseFloat(this.value),0]); board2.update(); board.update();" onfocus="hook=false;" onblur="hook=true"
  ></td>
</tr>
</table>  

<div id="box" class="jxgbox" style="width:600px; height:400px;"></div>
hook = true;
board2 = JXG.JSXGraph.loadBoardFromString('box2', 'eNrtmm1v2zYQgD/bv4JAPteS7D...Y6tu7MXarPHfJ+R+tkHyx', 'Geonext');

var board = JXG.JSXGraph.initBoard('box', {boundingbox: [-5, 5, 7, -3], axis: true});

var curve = board.create('functiongraph', [function(t){ 
        return board2.select('A').X() * t * t + board2.select('B').X() * t + board2.select('C').X(); 
    }, -10, 10]);						
			
function print_table() {
  if (hook){
    document.getElementById('print_a').value = board2.select('A').X().toFixed(2);
    document.getElementById('print_b').value = board2.select('B').X().toFixed(2);
    document.getElementById('print_c').value = board2.select('C').X().toFixed(2);
  }
};

board2.addChild(board);
			
print_table_id = board2.on('update', print_table);

GEONExT Construction used in this example

Sliders.gxt