JSXGraph 中的可拖动曲线

Draggable curve in JSXGraph

我想在 JSXGraph 中定义一条可拖动的曲线,类似于这个例子:

http://jsxgraph.uni-bayreuth.de/wiki/index.php/Draggable_exponential_function

但是,我不想根据拖动的单个点改变函数的形状,而是想拖动整条曲线本身,而不改变形状。事实上,对于这种情况,数学属性并不是那么重要——如果我不将它定义为一个函数也没关系,我只想在图形上有一条固定的曲线,我可以拖动它。

任何人都可以给我一个如何做到这一点的例子吗?

第一个想法是设置 draggable:true 但这行不通。

第二个想法是将图形的点分组,然后拖动组,但是,图形没有vertices我们可以使用。您可以通过 console.log(graph.points[0]); 查看它,它显示 t.Coords 而不是所需的 Point 对象。

第三个想法是在拖动可见点A时设置图形的位置,但它不起作用:https://jsfiddle.net/3u9rk8nj/3/可能是因为在拖动过程中更新了图形。

第 4 个想法是更改拖动时的图形函数 以匹配鼠标坐标。这有效:

var board = JXG.JSXGraph.initBoard('box1', {boundingbox: [-5, 20, 5, -2], axis:true});

var point_a = board.create('point', [0, 0] );
var graph = board.create('functiongraph', [
     function(x) {
        // adapt function outcome to match point dragging
        return Math.exp(x-point_a.X()) + point_a.Y();
     }]);

JSFiddle:https://jsfiddle.net/3u9rk8nj/4/

通过设置属性 fixed:false 可以使曲线可拖动。这是一个例子:

var board = JXG.JSXGraph.initBoard('box1', {boundingbox: [-5, 20, 5, -2], axis:true});

var graph = board.create('functiongraph', [
     function(x) {
        return Math.sin(x) + 5;
     }], {fixed: false});

最良好的祝愿, 阿尔弗雷德