在我的作品【个性DIY星星】中有人问星星是怎么做出来的。其实做法在我作品的代码中也有,但为了方便大家理解和使用我还是说下思路吧。。
通过观察其实我们可以发现把这个星星的所有外面的顶点连起来像是一个正十边形。
接着再看内顶点,可以发现其实内顶点是连起来是一个正五边形。
接着可以发现只要把这个五边形和十边形的顶点按特定的顺序连起来即可得到星星的图案。
而正十边形和正五边形的顶点都可以用极坐标算出来。
正十边形的第I个顶点的坐标为: ( cos(36*I)*R , sin(36*I)*R ) .R为十边形外接圆的半径。
正五边形的第I个顶点的坐标为: ( cos(72*I)*r , sin(36*I)*r ) .r为五边形外接圆的半径。
(通过大概估计 r=R/3 和原图比较像。)
最后可以发现五边变形顶点和十边形的顶点连接的十分有规律(一个五边形顶点连相邻的两个十边形顶点)。
最后用代码来做出星星:
for(i=1;i<=10;i++)
{ x1 =cos(36*i) * r;
y1 =sin(36*i) * r; //算出十边形的第I的坐标
x2 = cos( 36*(i+1) )* r;
y2 = sin( 36*(i+1) ) * r; //算出十边形的第I+1的坐标
if(i%2 == 0)
{ x3 = cos( zh( 72*(i/2)+16 + jj )) * r/3;
y3 = sin( zh( 72*(i/2)+16 + jj )) * r/3;
line(x1,y1,x3,y3); //连接(x1,y1),(x3,y3)两点
line(x2,y2,x3,y3); //五边形顶点连相邻的两个十边形顶点
}
else line(x1,y1,x2,y2); //连接两个十变形的顶点
}
这时画出来之后的效果:
这样就可以用只有10行左右的代码做出一个星星来了。而且这个星星的大小,角度,位置都可通过改变变量很方便的变动。
============================================================
我的另外两个作品:
【个性DIY星星】http://tieba.baidu.com/f?kz=1098061154
【百度蛇】http://tieba.baidu.com/f?kz=1089019488
通过观察其实我们可以发现把这个星星的所有外面的顶点连起来像是一个正十边形。
接着再看内顶点,可以发现其实内顶点是连起来是一个正五边形。
接着可以发现只要把这个五边形和十边形的顶点按特定的顺序连起来即可得到星星的图案。
而正十边形和正五边形的顶点都可以用极坐标算出来。
正十边形的第I个顶点的坐标为: ( cos(36*I)*R , sin(36*I)*R ) .R为十边形外接圆的半径。
正五边形的第I个顶点的坐标为: ( cos(72*I)*r , sin(36*I)*r ) .r为五边形外接圆的半径。
(通过大概估计 r=R/3 和原图比较像。)
最后可以发现五边变形顶点和十边形的顶点连接的十分有规律(一个五边形顶点连相邻的两个十边形顶点)。
最后用代码来做出星星:
for(i=1;i<=10;i++)
{ x1 =cos(36*i) * r;
y1 =sin(36*i) * r; //算出十边形的第I的坐标
x2 = cos( 36*(i+1) )* r;
y2 = sin( 36*(i+1) ) * r; //算出十边形的第I+1的坐标
if(i%2 == 0)
{ x3 = cos( zh( 72*(i/2)+16 + jj )) * r/3;
y3 = sin( zh( 72*(i/2)+16 + jj )) * r/3;
line(x1,y1,x3,y3); //连接(x1,y1),(x3,y3)两点
line(x2,y2,x3,y3); //五边形顶点连相邻的两个十边形顶点
}
else line(x1,y1,x2,y2); //连接两个十变形的顶点
}
这时画出来之后的效果:
这样就可以用只有10行左右的代码做出一个星星来了。而且这个星星的大小,角度,位置都可通过改变变量很方便的变动。
============================================================
我的另外两个作品:
【个性DIY星星】http://tieba.baidu.com/f?kz=1098061154
【百度蛇】http://tieba.baidu.com/f?kz=1089019488