0

var brd = JXG.JSXGraph.initBoard('box', {boundingbox: [-10, 10, 10, -10], axis:true, showcopyright:false}), a = brd.create('slider',[[2,-5],[7,-5],[-5,1,5]], {name:'a'}), b = brd.create('slider',[[2,-6],[7,-6],[-5,0,5]], {name:'b'}), c = brd.create('slider',[[2,-7],[7,-7],[-5,0,5]], {name:'c'}), f = brd.create('functiongraph',[function(x){ return a.Value()*x*x + b.Value()*x + c.Value(); }]); var d = brd.create('point',[(4*a.Value()*c.Value()-b.Value()*b.Value())/(4*a.Value()),-1*b.Value()/(2*a.Value())]);

これは二次関数の簡単なデモです。スライダーa、b、またはcに応じて頂点の位置を変更したいと思います。しかし、うまくいきませんでした。

私はJavaScriptの見習いにさえ近づいていません。アドバイスをお願いします。

4

2 に答える 2

0
var brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-10, 10, 10, -10], axis:true, showcopyright:false}),
a = brd.create('slider',[[2,-5],[7,-5],[-5,1,5]], {name:'a'}),
b = brd.create('slider',[[2,-6],[7,-6],[-5,3,5]], {name:'b'}),
c = brd.create('slider',[[2,-7],[7,-7],[-5,4,5]], {name:'c'}),
f = brd.create('functiongraph',[function(x){
        return a.Value()*x*x + b.Value()*x + c.Value();
    }]); d = brd.create('point',[-1*b.Value()/(2*a.Value()),(4*a.Value()*c.Value()-b.Value()*b.Value())/(4*a.Value())],{fixed:true});
brd.on('move', function() {brd.suspendUpdate();
brd.removeObject(d);
 d = brd.create('point',[-1*b.Value()/(2*a.Value()),(4*a.Value()*c.Value()-b.Value()*b.Value())/(4*a.Value())],{fixed:true});
   brd.unsuspendUpdate();
 });

方法を完全に理解しているかどうかはわかりませんが、解決しようとしましたが、完了しました

于 2016-06-14T01:39:23.457 に答える
0

別の (より簡単な) 解決策は、ポイントの座標をd動的にすることです。つまり、固定座標の代わりに関数を提供します。

var brd = JXG.JSXGraph.initBoard('box', 
        {boundingbox: [-10, 10, 10, -10], axis:true, showcopyright:false}),
    a = brd.create('slider',[[2,-5],[7,-5],[-5,1,5]], {name:'a'}),
    b = brd.create('slider',[[2,-6],[7,-6],[-5,0,5]], {name:'b'}),
    c = brd.create('slider',[[2,-7],[7,-7],[-5,0,5]], {name:'c'}),
    f = brd.create('functiongraph',[
            function(x){
                return a.Value()*x*x + b.Value()*x + c.Value();
            }]),
    d = brd.create('point',[
            function() { 
                return (4*a.Value()*c.Value()-b.Value()*b.Value())/(4*a.Value()); 
            },
            function() { 
                return -1*b.Value()/(2*a.Value());
            }]);
于 2016-06-14T07:15:49.083 に答える