使用程序绘制万花筒图案

效果演示

本文通过画板绘图,模拟手动绘制万花筒图案的过程。通过调整绘制参数,可以对花瓣数量、弯曲程度等特征进行调节。

为了防止被小人到处转载售卖等情况出现,本文仅讲述绘制方法,没有任何代码。同时,也不要向博主私信索要代码。如果确实感兴趣的话,通过本文讲解的方法,完全可以自己动手实现出来。

本文属于原创内容,禁止转载,侵权必究!

万花筒图案的最终效果,如上图所示。

绘制步骤

1、编写一个可以自动生成多边形顶点坐标的函数

多边形顶点本质上就是圆周上相隔一定角度取一次点,所以可以使用循环来计算出指定边数多边形的全部顶点坐标。

调用此函数时,传递边缘数量参数,即可得到对应边数的多边形顶点位置信息。

2、计算圆心轨迹

万花筒图案可以由小圆上指定点绕着大圆旋转得到,因此,需要计算出小圆的圆心轨迹。

上图中,大圆称为多边形A,小圆的圆心轨迹称为多边形B,小圆称为多边形C。

 

为了便于调试,可以将大圆、小圆的圆心轨迹、小圆都绘制出来,确认无误后再进行后续操作。

如果没遇到问题的话,应该是下图这个样子:

除了没有最终图案,其它的部分应该和上图是相似的。 

3、利用循环绘制旋转图案

设初始角度为0,使用一个循环,将角度从初始角度,旋转到结束角度.

例如,0到90度的图案如下:

再如,0到180度的图案如下:

在这个循环过程中,可以使用的变量为当前循环角度。

根据当前循环角度,计算出小圆的圆心轨迹,即多边形B。

再利用多边形B的位置,得到小圆的位置,从而对小圆进行旋转,得到绘制点位置,即多边形C。

在上图示例代码中,生成的多边形实际上是圆,小圆的边数设置得多一些就可以,例如100。绘制点的边数无所谓,因为只有一个点,设置1、2、3等数值均可。

这里有一个需要注意的地方,小圆的圆心轨迹旋转的方向与绘制点旋转的方向是相反的。

例如,小圆的圆心轨迹是顺时针旋转的,那么小圆上面的点在小圆旋转时,会向着逆时针旋转。

本程序通过模拟物理状态进行图形绘制操作。例如,大圆周长144、小圆60的情况下,旋转一周之后,落点位置并不会回到初始位置,而是跑到了左下角这个位置。

如果这里没有遇到问题的话,那么多旋转几圈就可以得到最终图案了。

猜你喜欢

转载自blog.csdn.net/x1051496412/article/details/129886614