这是一个常见的问题/请求,但我正在尝试创建一个由构成边界的较小圆圈组成的大圆圈。大圆的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)。如果我能得到任何建议或观察,我会非常感激。
答案 0 :(得分:0)
你几乎拥有它。我突然想到了一些事情:
您希望圈子留在屏幕上,因此您不希望每次都清除旧帧。删除第一次调用background()
以实现此目的。
如果您想减慢圈速,只需将thetaIncrease
缩小为0.15
之类的东西。可以想象这会使您的车速从30英里/小时降至15英里/小时。
最后,您只能分别按0.5
和0.2
增加斜边和半径。请记住,这是以像素为单位,并且您不会真正注意到这一小幅增长。使用类似5
和2
的内容来实际看到增加。