这只是为了好玩。

我想知道使每个圆点在相应的圆中旋转的角度的公式。

这些是我给定的值:


行数
列数
圆的半径(通用)


这是我想要达到的效果:



我假设每个点的旋转速度是均匀的

更新:

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




如果有人想要图块版本,则为:

08-16 08:52