提问者:小点点

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


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

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

如果我能以某种方式用贝塞尔顶点或简单的曲线顶点创建椭圆,那么我也许能做到这一点。有人用这种方式成功地创建了圆吗?或者有更好的选择吗?


共1个答案

匿名用户

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);
}

有代码))