关闭

瑰丽多姿的万花规曲线原理

标签: email算法c
1521人阅读 评论(0) 收藏 举报
分类:

(这是1999年我发表在《电脑爱好者》第12期的拙作原文+配图

最新版本的万花规曲线是屏幕保护版v2.51

效果图及超小安装包见:http://blog.csdn.net/Tycool/archive/2006/06/16/804031.aspx

)

    你肯定见到过这样一种玩具:把圆珠笔尖插到一块圆形塑料
板的孔内,顺(或逆)时针地用力让这块圆板沿着外面大圆框的
边缘转动,下面的纸上就会画出一种美丽的花纹,越画越多,越
画越神奇……只要让笔尖在小圆板上换个孔,又能画出另外千奇
百怪的花纹了!
    能不能让电脑来模拟这种画法呢?当然可以!让我们来动动
脑筋,左三圈,右三圈……哟,别转晕了!小弟我为了这个算法
画了好多张纸的草图,总算得到了满意的结果。电脑这位方脑壳
朋友回又多学了一招,好象挺能干的,其实哪有我们人的脑袋瓜
灵活好使啊!
    先看示意图:
!!!!!!!!!!!!!这里插入示意图 <万花规示意图.jpg>!!!!!!!

图〈1〉中,O为大圆圆心,C为小圆圆心,B为小圆上的孔,设R与
r分别为大小圆的半径,S为小圆上孔B离小圆圆心C的距离,由图
〈1〉开始,小圆逆时针自转(注意大小圆弧线相啮合)转至图〈2〉
位置时,设两圆心连线与水平相比转过了alpha弧度,小圆新旧切
点分别与圆心C连成的直径已转过thita弧度,因此:
    r*thita=alph*R (大小圆的弧相啮合)
    即thita=(R/r)*alpha;
    若把两圆相切的部分看成沿大圆弧作匀速圆周运动,角速度
常量W,时间t作为变量,则  alpha=W*t,thita=(R/r)*W*t;
    若设W为1度/秒,则
    alpha = t
    thita = (R/r) * t
    alpha - thita = t * (1-R/r)
    B点新的坐标为:
    |Xb|=CE+BD=(R-r)*cos(alpha)+S*cos(alpha-thita)
     =(R-r)*cos(t)+S*cos(t*(1-R/r))
     
    |Yb|=EO-CD=(R-r)*sin(alpha)-S*sin(alpha-thita)
     =(R-r)*sin(t)-S*sin(t*(1-R/r))
   
   
    输入后面的源程序,你就能看到令人激动的美妙曲线了!
    如果改动小圆的半径r和着笔点B距小圆圆心的距离S,新的曲线
就形成了。不过,此程序有些待改进的地方:对于不同的小圆半径和
B点的位置组合,各曲线开始循环画原先画过的点的时间(EndTime)不
同,源程序中有几对我试过的组合,能得到相当满意的图案。哪位看
官如能由r和S得到与EndTime的关系,在下恳请赐愚赏析!小弟Email
地址:mr_cq#sohu.com (恭候!)
    小弟通过此程序感觉到:数学分析得到的结果常常形式简单,但
实际效果却是相当让人激动的!此例只为抛砖引玉,请各位大虾赐教!

万花规曲线原理图

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:126829次
    • 积分:1647
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:5篇
    • 译文:0篇
    • 评论:10条
    最新评论