“数学”是什么?

“数学”不仅仅存在于大自然,在游戏、动画和音乐等商业或艺术作品中,也随处可见“数学”的影子。有时候从“数学”的角度重新思考和审视这些作品,不仅能为我们提供一个全新的欣赏视角,还能帮助我们洞察现象背后的原因、更好地进行艺术创作。

还记得在几个月前,用 14 天时间写出用户满意度全 5 分小游戏【星旅StarTrek】的零零后吗:颤抖吧!零零后已经开始爆肝写游戏了!

这款游戏的主程、来自华南师范大学的大一学生 HK-SHAO 这次就要从游戏、动画以及音乐三个方面和大家聊聊他所看到的“数学”。


引言

大家好,我是 HK-SHAO,今天我将从游戏、动画以及音乐三个方面去介绍其中涉及的数学原理。每个方面仅作介绍和发散,而不作深入解读,如果读者想深入了解某内容,可以上网查阅相关资料。

01

动画、音乐以及游戏

广义上来说,动画是“运动起来的画面”,音乐是“运动起来的音符”,而游戏则是“交互式的动画和音乐”。

我们小时候可能手绘过翻页动画,有些人可能曾用过 Adobe Flash 一帧一帧做过动画,而经典的宫崎骏动画电影则是将画面一张一张手绘到赛璐珞塑料卡纸上。当连贯的画面以一定帧率轮番切换时,由于人眼的视觉暂留现象而使人产生了画面运动起来的错觉,这便是动画的原理

也许弹过钢琴或者弹过吉他的人知道,随着时间的流逝而弹奏出不同响度和和音调的声音便是“运动起来的音符”。我们知道声音有三个属性:响度、音调和音色,当这三个属性随着时间而变化时,音乐便产生了。在编曲软件中,横轴代表时间、纵轴代表音高,而每一个台阶便是一个音符,高高低低起伏的台阶便代表着音乐。

不同于动画和音乐仅仅是在其原子(图像和音符)上多了时间一个维度,游戏在动画和音乐的基础上又多了与玩家交互的一个新的维度,玩家能通过交互来改变游戏中的画面和音乐(音效),这便产生了游戏。游戏是动画、音乐、文学等多种艺术的集中表达,而且根据不同类型往往又会涉及程序设计、物理学、算法、图形学甚至 AI 多个学科,作为集大成者其往往蕴含大量数学原理。

02

碰撞而产生的 π

现代 3D 动画和游戏经常涉及物理的模拟,而如今的计算机图形学便专攻这一领域的难题(例如刚体物理模拟,流体模拟等)。为了引出动画以及游戏物理中的数学问题,接下来让我们“梦回高中物理”,以一个简单的问题开始。

在一个完全光滑的地面和墙壁内侧放置着质量分别为  的两个方块,当大方块以某个速度撞击小方块后,小方块会以某个速度撞击墙壁(整个过程中发生的一切碰撞均为完全弹性碰撞)。

请思考:如果  ,整个过程将会发生几次碰撞?

为了探究这个问题,我尝试分别用一个 C 语言程序和 3D 建模软件 Blender 进行了物理模拟,而模拟结果让人非常震惊!

C 语言程序进行了 6000000FPS 200 秒的模拟:

最终得到结果 314159。

看上去似乎没什么意思,但是精彩的部分来了,碰撞次数  和两个滑块的质量比  有着如下微妙的关系:

请思考:你发现了什么规律吗?

是的,没错!当100的幂以整数逐渐增大时,整个过程的碰撞次数产生圆周率 π

为什么简单的物理碰撞能够产生圆周率 π 呢?实际上答案能够从碰撞过程中的能量守恒和动量守恒得到。

能量守恒:

动量守恒:

通过几何表示以及寻找一些几何关系:

最终可以得到,当时,整个物理过程的碰撞次数为:

如此一来我们便得到了此物理现象背后的平凡解。拥有了平凡解,我们便不需要计算机复杂的物理模拟和大量的计算,只要代入公式我们便能一步到位得到答案,这便是数学的魅力,我们发现简单的物理背后竟然蕴含着如此美妙的数学原理。

03

平滑的动画

动画在生活中经常出现,这里的动画指的不是狭义上在 bilibili 看到的新番,也不是电视机上播放的卡通动画,而是时间轴上的图像序列

也许我们在制作 PPT 时会为幻灯片添加切换动画,也许在点击鼠标之后 PPT 中某个元素会出现淡入淡出、平移、旋转、缩放等形式的动画。在手机系统中,当我们点击某个 APP 图标之后会出现图标放大然后逐渐淡入新界面的动画;在 Windows 系统中,当我们按下 Win 按钮后开始菜单会出现弹出的动画。

好的动画通常在视觉上让人感觉连贯、平滑以及符合物理,给人带来流畅和舒适的视觉体验,这在苹果的 macOS 上以及一些优秀的 PPT 作品中表现尤为突出。人的感知能直接分辨出一个动画是否平滑、连贯且舒适,而动画可以被分为线性动画和非线性动画两大类,通常合适的非线性动画要比线性动画更为舒适。

在一些 3D 动画软件、Adobe 的 After Effects (简称 AE )、甚至 MikuMikuDance(简称 MMD )中,通常由用户手动设定动画曲线。

而在此,我将介绍一种通常被命名为 smooth 的平滑曲线,它在非线性动画领域被广泛应用,而在笔者团队制作的一个游戏中,节点的动画效果和摄影机的自动平滑缩放效果均采用了这个曲线,达到了非常好的动画效果。

我们观察可以发现,smooth 曲线定义在  上的 S 形曲线,值域为(0,1),并且变化非常缓和。事实上, smooth 曲线是微分方程  的解,只需一点点高数知识,我们便可以求解这个微分方程。

如果常数  为  ,最后可以化成。了解深度学习的同学可能会意识到,这其实就是神经网络模型中的 sigmoid 函数(事实上 sigmoid 是 step smooth 的谐音)。在神经网络模型中,每一个神经元都可以用一个数学模型  来表达,其中  分别是这个神经元的输出、激活函数、权重、输入和偏置,而 sigmoid 作为非线性激活函数在深度学习领域应用非常广泛。

这个函数曲线是 S 形的,所以高中生物将其称作 S 形曲线。而它也被称作 Logistic 函数,传染病动力学(如基于 Logistic 回归的传染病模型)中常见其身影。由于在计算机上进行  指数运算可能不够稳定,而且运算量较大,所以可以将其麦克劳林展开,然后取前几项进行简化运算。

04

混沌蝴蝶(Chaos)

上述动画曲线在应用时确实非常优美和自然,但是当其表达式换一个形式之后可能就可能会进入混沌的边缘。

 转变为  ,这是一个迭代式,其可以改写为一个递推数列  。如果我们设置  的初值  ,然后以递推次数  为横轴, 的值为纵轴,系数  为时间轴来可视化这个数列的图像,便能够看到让人奇特的现象,下面通过视频展示以上过程。

Logistic Map with Dynamic Visualization

如果以  为横轴, 为纵轴(  是一个足够大的数),便能够绘制出被称作倍周期分岔图的奇特图像。

在倍周期分岔图中,我们能够直观的看到当  足够大时,原本的曲线会剧烈震荡以至于产生杂乱无章的混沌(Chaos)现象(  的微小改变足以导致结果的巨大改变)。1975年,费根鲍姆证明这种周期倍增分岔每次发生时的参数之间的差率是一个常数,同样的常数适用于所有非线性迭代产生的倍周期分岔,这个常数被称作费根鲍姆常数,它的定义是:

也许你听说过蝴蝶效应,一个蝴蝶扇动一下翅膀,就有可能引起地球另一边产生一次风暴。科幻作家刘慈欣在短篇小说《混沌蝴蝶》中也有相关介绍。西方曾有民谣:

少了一个铁钉,丢了一只马掌。

丢了一只马掌,跑了一匹战马。

跑了一匹战马,败了一场战役。

败了一场战役,失了一个国家。

这个民谣非常形象的为我们展示了微小的改变足以产生巨大的后果,这便是混沌。

天气难以准确预报也是因为气象系统是混沌系统的原因,美国气象学家洛伦兹(orenz,E. N.)曾提出过一个混沌现象的简化模型——一个常微分方程组——洛伦兹方程

在三维空间中设置初始坐标进行迭代计算,便能够绘制出类似下面这样蝴蝶形状的混沌图案,因此他将其称作混沌蝴蝶

混沌系统仍然是数学乃至物理学上的未解之谜。研究混沌系统在气象学、流体力学、传染病动力学等多个领域非常重要,而基于混沌系统的伪随机数生成算法同样应用广泛。早期众多编程语言所采用的伪随机数函数采用的是线性同余法:

说不定在你的手机中,或者一些精密仪器中就有通过电路设计的硬件级随机数发生器。

05

分形与自我指涉

前文所提及到的倍周期分岔图实际上是分形结构,因为其每次分岔都是与其它分岔相似的。分形实际上指的是维度是分数,我们也许知道零维是点、一维是线、二维是面、三维是体,那分数维度是什么样子的?

下面通过一个动图让大家直观感受一下分数维度的模样:

三维 门格海绵

著名的分形有曼德勃罗集茱莉亚集,它们能表示为复数的非线性迭代式。

曼德勃罗特集

曼德勃罗特集是人类有史以来做出的最奇特,最瑰丽的几何图形,曾被称为“上帝的指纹”。实际上,分形在众多影视作品中出现(包括科幻电影以及狭义上的动画作品),以实现非常绚丽的效果。

科幻电影《盗梦空间》、《星际穿越》、《星球大战前传3》、《罗拉快跑》以及动画作品《Divers》、《正解的卡多》、《犬屋敷》、《HELLO WORLD》等均有利用分形营造震撼的视觉场面,赢得了观众的喜爱。

荷兰著名画家莫里茨·科内利斯·埃舍尔(Maurits Cornelis Escher)以其画作的哲学和数学性而闻名。从其作品《画廊》中能看到分形的影子:

事实上其画作还充斥着自我指涉、莫比乌斯环等奇特图案,著名游戏《纪念碑谷》其灵感便来源于埃舍尔的作品。分形是一种自我指涉(在逻辑学上被称作悖论),而巴赫的音乐作品引人入胜,常常利用了“卡农”以及“赋格”这种谱曲技巧,从某种方面上来说也是一种“分形”,或者说是一种自我指涉。

人工智能学家侯世达(Douglas Richard Hofstadter)《哥德尔、艾舍尔、巴赫书:集异璧之大成》由商务印书馆出版,是英语世界中有极高评价的科普著作,书中便探讨了数学家哥德尔、版画家埃舍尔和音乐家巴赫其成果在分形、自我指涉等方面的数理逻辑学、可计算理论、人工智能学、语言学、遗传学、音乐、绘画,其构思精巧、含义深刻、视野广阔、富于哲学韵味。

06

平均律与黎曼 ζ 函数

学过音乐的人可能知道,现代音乐用十二平均律将一个八度音程按波长比例平均分成十二等份,每一个等份被称作一个半音。现代音乐虽然以十二平均律为主流律制,然而实际上律制有无数种,但它们之间并不平等。十二平均律作为现在的主流律制,是什么使得它这么突出?也许有人会回答  和很接近,同时  和   也比较接近。乍一看会有一个数字满足这些性质似乎有点偶然,但是这些其实只是表面现象,它们的背后埋藏着一个深刻的数学规律,而这个规律与黎曼 ζ 函数密切相关。

黎曼 ζ 函数是著名数学家黎曼黎曼猜想中提及的一个函数,这个猜想与当今数学未解之谜素数的规律密切相关,而现代密码学又是建立在关于大整数的质因数分解上,可以说当黎曼猜想被解决,那么素数的规律便找到了,那么当今网络密钥、信息安全便不复存在。

虽然平均律有无数种,但是并不是每一个平均律中的音都是“和谐的”,一个音听起来自然、悦耳、好听,就称这个音是“和谐的”,那么究竟哪种平均律下的音更为和谐呢?我国有学者研究发现,在乐理中一个平均律中的音是否和谐,这个平均律究竟“好不好”,与现代数学的前沿黎曼 ζ 函数有密切关系。

小结

通过以上例子,我们能够发现:游戏、音乐以及动画等众多艺术领域,其背后仍然有数学的本质值得令人挖掘,事实上在数学上的许多未解之谜仍然与生活、艺术息息相关,甚至非常有力的影响着我们生活中的方方面面。了解现象后的数学本质确实能够让人耳目一新!

参考文献:

[1]Solara570. 方块碰撞问题中隐藏的圆.

https://zhuanlan.zhihu.com/p/55121772

[2]切我. 平均律制与黎曼函数.

https://zhuanlan.zhihu.com/p/57552517

[3]豆子,徐建德. 分形在影视作品中的应用. 广电视角,1671-0029(2013)11(下)-0089-02

[4]刘慈欣. 蝴蝶. 中国工人出版社. ISBN:9787500863120

[5]COCOS. Cocos Creator JavaScript engine API reference. https://docs.cocos.com/creator/api/zh/classes


Cocos 开发者沙龙来了!6 月 19 日,我们将来到上海,与各位开发者齐聚一堂!

引擎体重 & 技术担当 Panda、 CTO & 周边收集狂林顺、首席客服王哲及技术团队将一起空降上海,为大家详解 Cocos Creator 3.x 最新功能及宝藏技术。

更有华为海思麒麟团队图形渲染工程师杜鹏程以及华为工程师夏敏言、《江南百景图》小游戏版负责人大城小胖、乐府资深 Cocos 开发专家夏凯强、TopOn 广告产品专家余国强等一众大佬强势加盟,带来超多干货分享!

此外,我们为大家带来了硬核现场一对一技术支持,限额 5 个团队。

是的,你没有看错,我们引擎团队核心成员将全程驻场,你可以携带自己的作品和问题同他们进行一对一技术交流。

名额有限,赶快扫描下方二维码或点击【阅读原文】报名吧!

往期精彩

开发者集合丨游戏背后的“数学”本质?听听零零后主程怎么说相关推荐

  1. 电子技术背后的数学本质【3】(放大器电路噪声的计算和去除)

    这一篇我们主要对电路的噪声进行一个分析,尤其是在放大器电设计时,遇到的噪声问题.首先我们对噪声进行一个数学上的分析,得到噪声的表达式.然后对电路中常见的噪声进行一个分类,并根据之前的数学分析,给出计算 ...

  2. 梯度下降背后的数学原理几何?

    来自 | 深度学习这件小事   编辑 | Datawhale 对于诸位"机器学习儿"而言,梯度下降这个概念一定不陌生,然而从直观上来看,梯度下降的复杂性无疑也会让人"敬而 ...

  3. 机器学习数学本质的理解

    Datawhale干货 作者:鄂维南院士,来源:科学智能AISI 北京时间2022年7月8日晚上22:30,鄂维南院士在2022年的国际数学家大会上作一小时大会报告(plenary talk).今天我 ...

  4. 一文读懂梯度下降背后的数学原理几何

    (给视学算法加星标,修炼编程内功) 来源:AI科技评论 对于诸位"MLer"而言,梯度下降这个概念一定不陌生,然而从直观上来看,梯度下降的复杂性无疑也会让人"敬而远之&q ...

  5. Google BBR拥塞控制算法背后的数学解释 | 深度

    参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 作者 | 赵亚 转载自CSDN网站 杭州待了一段时间,回到深圳过国庆假期,无奈温州皮鞋?厂老板过节要回温州和上海,不在深圳,也就没有见着,非常 ...

  6. 解析深度神经网络背后的数学原理!

    作者 | Piotr Skalski 译者 | 巧克力 编辑 | Jane 出品 | AI科技大本营 [导读]为了更好地理解神经网络的运作,今天只为大家解读神经网络背后的数学原理.而作者写这篇文章的目 ...

  7. 人工神经网络背后的数学原理!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:贾博文,浙江大学,Datawhale原创作者 本文约8000字,建 ...

  8. 【深度学习】解析深度神经网络背后的数学原理

    来源:产业智能官 解析深度网络背后的数学 如今,已有许多像 Keras, TensorFlow, PyTorch 这样高水平的专门的库和框架,我们就不用总担心矩阵的权重太多,或是对使用的激活函数求导时 ...

  9. 逻辑回归算法c语言_逻辑回归算法背后的数学

    逻辑回归算法背后的数学 看完深蓝学院的机器学习公开课后,对于逻辑回归部分,打算写篇学习笔记记录总结一下,也和大家共同分享. 1 基本思能 逻辑回归(Logistic Regression)和线性回归( ...

最新文章

  1. 在Source Insight中看Python代码
  2. 转:SQL Server 2005安装过程图解
  3. RabbitMQ架构模型(一)
  4. php http agent,PHP通过http头user-agent判断是否为手机浏览器
  5. Android获取网页源代码
  6. 数据保护法规可被滥用于人肉 GitLab 用户和接管账户
  7. 解决Chrome浏览器不能访问https网站的问题
  8. hibernate连接成功
  9. Mugeda(木疙瘩)H5案例课—换装小游戏-岑远科-专题视频课程
  10. 《信号与系统》解读 第1章 信号与系统概述-1:信号与系统的描述和分析方法
  11. APP分发是什么意思!为什么需要用到呢
  12. Simulink代码生成:通过Matlab Function集成C函数
  13. O2OA产品核心能力介绍:门户管理
  14. 如何对CAD图纸快速测量?
  15. 拜占庭鲁棒Krum聚合算法
  16. Swagger界面丑、功能弱怎么破?用Postman增强下就给力了!
  17. 网络与信息安全-第三章-对称秘钥加密算法
  18. 万国觉醒服务器维护,《万国觉醒》怎么换服 更换服务器方法攻略
  19. 黑暗爆炸 #1059. [ZJOI2007]矩阵游戏
  20. MS Castap学习(1)

热门文章

  1. Web基础(一) HTTP详解
  2. npm uninstall 卸载npm包
  3. idea搭建Spark开发环境
  4. Java小农养成记第十二天
  5. 现代信号处理笔记 1 概率论基础知识(Review of Probability)
  6. 内网访问外网以及外网访问内网的原理
  7. mysql通过update修改默认值_sql 更改默认值
  8. Proxmox ve 开启嵌套虚拟化
  9. Invocation failed Unexpected end of file from serverjava.lang.RuntimeException: Invocation failed U
  10. 华为鸿蒙os可升级手机,华为鸿蒙OS 2.0升级清单曝光,来看看有没有你的手机