创建由较小圆圈组成的扩展圆圈

时间:2016-10-28 03:04:51

标签: processing

这是一个常见的问题/请求,但我正在尝试创建一个由构成边界的较小圆圈组成的大圆圈。大圆的x和y将是鼠标。

事情就是这些圈子将逐一绘制,当θ达到2 * PI时,会发生一些事情。圆圈将清晰,斜边将增长,圆圈大小也会增大(按比例),然后从0开始再次绘制圆圈。此视频的前几秒显示过程https://www.youtube.com/watch?v=hAVH-2ven94&feature=youtu.be < / p>

对于代码,这是我到目前为止所拥有的:

float theta = 0;
float hypotenuse = 30;
float radius = 10;
float thetaIncrease = 0.3;
float hypotenuseIncrease = 0.5;
float radiusIncrease = 0.2;

void draw(){

    background(0);

    float x = cos(theta)*hypotenus;

    float y = sin(theta)*hypotenus;

    ellipse(mouseX+x, mouseY+y, radius, radius);

    theta += thetaIncrease;

    if(theta >= PI*2) {

        background(0);

        hypotenuse += hypotenuseIncrease;

        radius += radiusIncrease;  

        theta = 0;

    }

}

我遇到的一个问题是当我将theta设置为自动增加0.3时,圆圈开始快速旋转。另外,如果我走另一条路(theta = 0; ellipse(); theta = 0.3; ellipse();)圆圈一次全部绘制,我不能创建一个if语句使theta恢复为0并擦除当它到达2 * PI时会增大圆圈,因为theta实际上没有增加(它只是保持在2.6)。如果我能得到任何建议或观察,我会非常感激。

1 个答案:

答案 0 :(得分:0)

你几乎拥有它。我突然想到了一些事情:

您希望圈子留在屏幕上,因此您不希望每次都清除旧帧。删除第一次调用background()以实现此目的。

如果您想减慢圈速,只需将thetaIncrease缩小为0.15之类的东西。可以想象这会使您的车速从30英里/小时降至15英里/小时。

最后,您只能分别按0.50.2增加斜边和半径。请记住,这是以像素为单位,并且您不会真正注意到这一小幅增长。使用类似52的内容来实际看到增加。