这只是为了好玩。
我想知道使每个圆点在相应的圆中旋转的角度的公式。
这些是我给定的值:
行数
列数
圆的半径(通用)
这是我想要达到的效果:
我假设每个点的旋转速度是均匀的
更新:
y牛!感谢您的所有答复。但是,我也设法以不同的方式制作自己的作品:
通过仅在构造函数端执行逻辑:
CircleWithDots() : timer(clock()), angle(angle_counter = (angle_counter >= REVOLUTION - 1) ? 0 : angle_counter + ANGLE_STEP) { }
哪里:
REVOLUTION = 360 + 1;
ANGLE_STEP = 20;
还有这个(用于旋转点):
x = table_cos[angle] * radius;
y = -table_sin[angle] * radius;
最佳答案
就像我在评论中说的,这只是对角线排列,所以您要做的就是
(xpos-ypos)*scale_factor
这是一个处理js画板(有点慢,您可以将其复制粘贴到本地处理安装中以查看其运行速度更快):
http://sketchpad.cc/yT0pQfbYXV
相关部分是:
ang = (x-y) * scalefac + anim;
float xpos = x*xscale+ sin(ang)*cwidth/2.0;
float ypos = y*yscale+ cos(ang)*cheight/2.0;
arc(xpos,ypos,4,4,0,PI*2);
如果有人想要图块版本,则为: