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});
最良好的祝愿,
阿尔弗雷德
我想在 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});
最良好的祝愿, 阿尔弗雷德