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

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

万花规曲线原理图

【DP】【单调队列】【NOI2005】瑰丽华尔兹

340. [NOI2005] 瑰丽华尔兹★★★ 输入文件:adv1900.in 输出文件:adv1900.out 简单对比 时间限制:1 s 内存限制:128 MB 【任务描述】你跳过...
  • morestep
  • morestep
  • 2015年07月04日 16:54
  • 1222

[BZOJ 1499][NOI 2005]瑰丽华尔兹(DP+单调队列优化)

题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1499思路一个很显然的O(nmT)O(nmT)的做法就是令f[t][i][j]f[t][i][...
  • qpswwww
  • qpswwww
  • 2015年04月25日 11:11
  • 937

贝塞尔曲线的应用

在Unity设计过程中,我们常常会想让游戏中的人群或者相机延一组点进行移动,若想使其平滑运动,这时我们便会用到贝塞尔曲线。...
  • qq_18408937
  • qq_18408937
  • 2015年08月04日 22:32
  • 874

[bzoj1499][NOI2005] 瑰丽华尔兹 代码

1499: [NOI2005]瑰丽华尔兹Time Limit: 3 Sec Memory Limit: 64 MB Submit: 1547 Solved: 946 [Submit][Stat...
  • youhavepeople
  • youhavepeople
  • 2017年05月09日 15:50
  • 179

Bezier曲线、B样条和NURBS的基本概念

最不能理解的一点,一讨论软件的曲面,曲线功能,最后就变成曲线、曲面的数学原理的讨论了,但是里面也没数学好的,讨论的结果可想而知。 我不是数学家,我不懂这么复杂的方程,只要好用就行了。 ...
  • wang15061955806
  • wang15061955806
  • 2016年09月22日 11:41
  • 2086

B样条曲线拟合原理

1.与贝塞尔曲线对比 B样条曲线是在Bezier 曲线基础上发展起来的一类曲线,它克服了Bezier 曲线整体控制性所带来的不便,最常用的是二次和三次B样条曲线。 2.二次B样条 2.1 ...
  • shenziheng1
  • shenziheng1
  • 2017年01月13日 18:51
  • 4594

L1归一化和L2归一化范数的详解和区别

一句话介绍就是: L1 norm就是绝对值相加,又称曼哈顿距离; L2 norm就是欧几里德距离之和L2范数: 在向量范数范围内: L1范数就是等于各个值的绝对值相加,这里不贴公式了。从公式上...
  • u014381600
  • u014381600
  • 2017年01月11日 10:36
  • 4296

自然电位测井 基本原理、测量方法、曲线规律、曲线用途

一、自然电位测井(SP测井) 自然电位测井的测井对象是裸眼井,测量内容是井内自然产生的电位变化,目的是研究井剖面的地层性质。自然电位测井对于区分岩石性质,尤其是区分泥质和非泥质地层有突出的优点。 ...
  • dufangfeilong
  • dufangfeilong
  • 2014年10月31日 16:31
  • 2647

绘制Koch曲线

提供绘制Koch曲线的html5代码一坨: function draw() { var pi = 3.14159265; // 获取画布 ...
  • yangsh3002
  • yangsh3002
  • 2016年12月12日 00:13
  • 507

新规曲线行驶的图解技巧

曲线行驶,要求车不能压边线,车不能停止。只要掌握了方法,曲线行驶是几个必考项目中,较容易的一个,绝对不能在这一个项目中败下阵来。下面就用图文并茂的方式,来说明曲线行驶的方法技巧。 进入曲...
  • thy822
  • thy822
  • 2016年04月26日 13:28
  • 601
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:瑰丽多姿的万花规曲线原理
举报原因:
原因补充:

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