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

原创 2006年06月16日 16:50:00

(这是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 (恭候!)
    小弟通过此程序感觉到:数学分析得到的结果常常形式简单,但
实际效果却是相当让人激动的!此例只为抛砖引玉,请各位大虾赐教!

万花规曲线原理图

VB054-万花规演示 源代码

  • 2016年12月23日 21:48
  • 35KB
  • 下载

万花规演示(7KB)

  • 2006年02月23日 09:05
  • 7KB
  • 下载

三角函数与万花尺(初稿)

书上说过,一个角θ的终边与单位圆的交点坐标为(cosθ,sinθ),我们很容易推导出角θ的终边与圆心位于原点、半径等于r的圆的交点坐标为(rcosθ,rsinθ)。当θ由0逐渐增大到2π时,我们就可以...

万花写频软件

  • 2015年04月27日 01:10
  • 404KB
  • 下载

AS3模拟万花尺

  • 2014年04月28日 13:03
  • 9KB
  • 下载

变换多姿的图案

十字型的徽标(递归) package org.vo; import java.util.Scanner; public class text8 { /* * 十字型的徽...

曲线桥蹲位计算原理

  • 2014年01月16日 11:50
  • 28KB
  • 下载

实时曲线原理

  • 2006年02月23日 09:05
  • 11KB
  • 下载

最小二乘法多项式曲线拟合原理与实现

概念 最小二乘法多项式曲线拟合,根据给定的m个点,并不要求这条曲线精确地经过这些点,而是曲线y=f(x)的近似曲线y= φ(x)。 原理 [原理部分由个人根据互联网上的资料进行总结,希望对大...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:瑰丽多姿的万花规曲线原理
举报原因:
原因补充:

(最多只允许输入30个字)