如何修复 jsxgraph 代码绘制正则多边形?

陈全

我编写代码来绘制正则多边形。但它不会根据滑块值进行绘制。如何解决?

var n = brd.create('slider', [[0,-2],[8,-2],[3,5,10]], {name:'n',snapWidth:1});
var pol = brd.create('regularpolygon',[
function() { return [3, 0];},
function() { return [4, 0];},
function() { return [n.Value()];}]);
brd.unsuspendUpdate();
阿尔弗雷德·瓦瑟曼

事实上,在 JSXGraph 中,规则多边形不能采用动态数量的顶点。一种解决方法是使用曲线,请参阅https://jsfiddle.net/6emrfzyu/1/

const board = JXG.JSXGraph.initBoard('jxgbox', { 
    boundingbox: [-3, 6, 6, -3], axis:true
});
var n = board.create('slider', [[-2,-2],[4,-2],[3,5,10]], {name:'n',snapWidth:1});

var A = board.create('point', [3, 0]);
var B = board.create('point', [4, 0]);

var pol = board.create('curve',[[], []], {fillColor: 'yellow', fillOpacity: 0.2});

pol.updateDataArray = function() {
    var i, dx, dy, alpha,
        no = n.Value();

    this.dataX = [A.X(), B.X()];
    this.dataY = [A.Y(), B.Y()];
    if (no < 2) { 
        return this; 
    }

    alpha = 2.0 * Math.PI / no;
    for (i = 2; i <= no; i++) {
        dx = this.dataX[i - 1] - this.dataX[i - 2];
        dy = this.dataY[i - 1] - this.dataY[i - 2];
        this.dataX.push(Math.cos(alpha) * dx - Math.sin(alpha) * dy + this.dataX[i - 1]);
        this.dataY.push(Math.sin(alpha) * dx + Math.cos(alpha) * dy + this.dataY[i - 1]);
}

    return this;
};
board.update();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章