在处理过程中使用beginShape绘制完美的椭圆(圆)

时间:2013-08-15 19:34:00

标签: performance processing bezier ellipse

我遇到了Processing.js草图的速度问题,想通过使用beginShape()endShape()创建我的25个省略号来加速它。我知道这有限的功能,但否则处理将在每个椭圆调用上执行context.beginPath(),如下所示:

function line (x1, y1, x2, y2) {
  context.beginPath();
  context.moveTo(x1, y1);
  context.lineTo(x2, y2);
  context.closePath();
  context.stroke();
};

如果我能以某种方式创建带有贝塞尔脊椎或简单曲线椎体的椭圆,那么我可以做到这一点。有没有人以这种方式成功创建圈子?或者有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

void draw() {
  translate(width/2,height/2);
  drawCircle(10,width/3);
}

void drawCircle(int sides, float r)
{
    float angle = 360 / sides;
    beginShape();
    for (int i = 0; i < sides; i++) {
        float x = cos( radians( i * angle ) ) * r;
        float y = sin( radians( i * angle ) ) * r;
        vertex( x, y);    
    }
    endShape(CLOSE);
}

有代码))