源码是文曲星上的GVBASIC,很容易看懂的

这是别人的帖子


设大圆半径为R1,小圆半径为R2,小圆心到P的距离为D;
X=-GP=(GK-PK)=-(R1-R2)×COS(a1)-D×COS(a2-a1)
Y=-JK=(Jo-Ko)=(R1-R2)×SIN(a1)-D×SIN(a2-a1)
∵小圆跟大圆转过的弧长相等
∴a1×R1=a2×R2
∴a2=a1×R1÷R2
-----------------------------------------------
好了,看看上面的D参数,其实万花规小圆尺上有很多孔,孔到小圆心的距离
不同画出的花筒就不同,您玩的时候将笔尖插入不同的孔就是改变D参数的数
值!看看下面----
10 GRAPH:PI=3.141592654'   
20 R1=30:R2=2:D=10'将这参数尽量的改变吧
30 FOR I=1 TO 10000'可以加上STEP X来控制速度
40 A1=(PI/360)*I:A2=A1*R1/R2
50 X=-(R1-R2)*COS(A1)-D*COS(A2-A1)+80
60 Y=(R1-R2)*SIN(A1)-D*SIN(A2-A1)+40
70 DRAW X,Y
80 IF PEEK(199)<128 THEN 100
90 IF INKEY$ THEN END'由于不同的花筒的轨迹周期不同所以由用户自己叫停
100 NEXT I
速度很慢是不是,就当作欣赏吧!
试将R2改为12,看看!呵呵~~~五角星;R2=25,D=9看看!呵呵,尽情的改吧!

结果很好看     就是不知道原理
那位高手指点一下