六个酷炫动图背后的数学问题
今天为大家展现一些有趣的视觉现象及其背后的数学问题:
一、直与弯
咦?一根直杆为什么能从弯曲的洞中穿过?
想想这其实不奇怪。这根杆是斜着的,杆中间的点离旋转轴最近,因此对应的洞上的点离旋转轴也最近;杆的两边离旋转轴较远,因此对应的洞上的点离旋转轴也远。所以,这个洞不会是直线,只会是一条曲线。
那这是什么曲线?感兴趣的读者可以自己动手算一算。答案是双曲线。
把这个曲线绕旋转轴旋转一周,形成一个曲面,叫做单叶双曲面。看看下图你就会发现,这根杆所在直线是这个曲面的一部分:
对于一个曲面,如果经过曲面上的每一点都有一根直线在曲面上,我们就称之为直纹曲面。圆柱面、圆锥面都是直纹曲面的例子,单叶双曲面也是如此,只不过它上面的直线看起来不是那么显而易见。单叶双曲面还有一个神奇的地方:通过它上面的每一个点,都有两条直线在曲面上。
这样的特点使得单叶双曲面在建筑当中也有特殊的应用,比如说俗称“小蛮腰“的广州新电视塔。
二、圆锥曲线
图片来源:mathgifs
大家都知道,椭圆、抛物线、双曲线这些曲线称为“圆锥曲线”。但这个词是怎么来的呢?
既然叫圆锥曲线,当然与圆锥有关。首先,我们来想象一个圆锥——确切地说,是一个圆锥面。它是一条直线绕与它相交(但不垂直)的另一条直线旋转一周所形成的曲面。我们平常所见的圆锥体的侧面,只是圆锥面的一部分。
然后,我们用一个平面去截它。平面与圆锥面相交之处,是一条曲线。由于整条曲线都在这个平面上,我们可以把它看作一个平面曲线。这便是圆锥曲线。平面与圆锥的旋转轴所成的角度不同,曲线就会变成不同的形状:圆、椭圆、抛物线、双曲线(其中圆可以看作是一种特殊的椭圆)。
对圆锥曲线的研究是从古希腊开始的。那时还没有解析几何,数学家研究圆锥曲线的时候,采用的就是上面的定义。古希腊数学家阿波罗尼奥斯就是从这样的定义出发,写下了八卷《圆锥曲线论》。
图中还展示了一些圆锥曲线的退化情形:在平面经过圆锥的顶点的时候,圆锥曲线会变成两条相交的直线,两条重合的直线,或者一个点。
三、圆面积公式
图片来源:matthen
圆面积公式S =πr2大家都学过,你还记得课本中如何讲解这个公式的推导吗?在我当年学习的人教版的教材中,是把圆剪成了一个个小扇形,然后把它们近似地拼成一个长为πr,宽为r的矩形。扇形裁得越小,拼出来的东西也就越接近矩形,然后用矩形的面积公式就可以计算了。
而这里用了另一种办法:把圆拆成一个个同心的细圆环。然后,把这些圆环展开,变成高为r,底边长为2πr的的三角形。当然,这谈不上是严谨的证明,但其中已经蕴含了一些微积分的思想。我们甚至可以利用类似于古希腊穷竭法的办法,把它写成一个相对严谨的证明。
四、无限雪花
图片来源:functor.co
“分形”这个词大家可能已经见过很多次了。它的特点是自相似。比如说,上图中的科赫曲线,它的局部放大之后和整体长得一模一样。
那这样的曲线是怎样画出来的呢?
我们先画一条线段,然后把它三等分,将中间的那一段换成两段同样长的线段。这样,我们就有了四条线段。对这四条线段也重复这一过程。每重复一次,称为一次迭代。无限地迭代下去之后,我们就得到了科赫曲线。当然,实际画图的时候,不可能真的无限迭代下去,常常只需要迭代有限多次,直到看不出区别了为止。
Matrix67在他的博客中也展示过科赫曲线的绘制过程(有兴趣者可复制链接http://www.matrix67.com/blog/archives/6231至浏览器查看):
在这里还可以看到一个三维的分形动图,3D眩晕者请快速跳过。
五、朱利亚集
这是另外一种分形——朱利亚集(Julia set)。什么是朱利亚集?我们首先固定一个常数C,对复平面上的一个点,不断地重复进行变换z→z2+C。这样得到的一些点会越跑越远,一直趋向于无穷;而另一些点则一直呆在原点附近,不会跑出一个有限范围。第二类的点所构成的集合,就是朱利亚集。当常数C取值不同时,画出来的朱利亚集也会不同。上面的动图就展示了在C变化时朱利亚集的变化。由这种方式生成的分形图案被称为“逃逸时间分形”。
但是,严格来说,上面所说的只是“填充”的朱利亚集(filled-in Julia set)。真正的朱利亚集是它的边界,也就是上图中的白色线条部分。前面所讲的变换,只是一个二次多项式。对于“填充”的朱利亚集,这个概念可以推广到一般的多项式。对于真正的朱利亚集,还可以推广到分式。
而真正的朱利亚集又有另外一种画法:
先选取一些点,然后对它们不断地进行该变换的“逆变换”——准确的说法是取它们在这个变换下的原像,而一个点的原像往往不止一个。对变换z→z2+C来说,它的原像就是先减去常数C——在图上看来就是平移;然后开平方根——一个数的平方根有两个,在图上看来是先扭一扭,再复制一个到下半平面。每一步都一个变两个,因此出来的点会越来越多。这些点的极限便是朱利亚集。
六、布朗树
这又是另外一种类型的分形——布朗树,生成这种分形的过程,则叫做扩散限制聚集(Diffusion-limited aggregation,简称DLA)。
这过程说起来也很简单:我们有很多粒子和一枚“种子”,粒子在空间中随机游走,但只要碰到种子就会在聚集它上面。种子上聚集的粒子越来越多,就会长成一棵有着错综复杂的结构的“大树”。
科赫曲线和朱利亚集都很漂亮,但在日常生活中不太容易看到。布朗树就不一样了,我们可以在很多地方看到自然形成的布朗树构造,比如说,在皮蛋上:
原文发布时间为:2015-12-18
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号
六个酷炫动图背后的数学问题相关推荐
- 精选6种制作酷炫动图的方法,收藏!
上面的两个动图,就是条形竞赛图和折线竞赛图,今天我们就来看看都有哪些方便的方法来制作呢 在线制作 有很多在线的网站都可以制作上述类似的竞赛图,下面我们来介绍萝卜哥常用的两个 flourish 首先推荐 ...
- python拿什么做可视化界面好-用python打造可视化爬虫监控系统,酷炫的图形化界面...
原标题:用python打造可视化爬虫监控系统,酷炫的图形化界面 本文并不是讲解爬虫的相关技术实现的,而是从实用性的角度,将抓取并存入 MongoDB 的数据 用 InfluxDB 进行处理,而后又通过 ...
- python中turtle画酷炫图案-用python打造可视化爬虫监控系统,酷炫的图形化界面
本文并不是讲解爬虫的相关技术实现的,而是从实用性的角度,将抓取并存入 MongoDB 的数据 用 InfluxDB 进行处理,而后又通过 Grafana 将爬虫抓取数据情况通过酷炫的图形化界面展示出来 ...
- 【python】彩色图秒变酷炫黑白图,灰度模式,比PS还好用的图像处理,cv2
使用python中的cv2模块,将彩色图秒变酷炫黑白图,比PS还好用! 完整代码: import cv2 #img = cv2.imread('./imgs/2.jpg',cv2.IMREAD_UNC ...
- linux酷炫桌面环境,Linux系统好酷炫漂亮(图)
Linux系统好酷炫漂亮(图),Linux 本身就非常灵活.在很大程度上您可以定制桌面的外观和行为.没有接触过Linux的朋友可能有这样的观 Linux 本身就非常灵活.在很大程度上您可以定制桌面的外 ...
- Android使用SVG矢量图打造酷炫动效!
一个真正酷炫的动效往往让人虎躯一震,话不多说,咱们先瞅瞅效果: 如果你想看 GAStudio Github主页,请戳这里: 如果你想看 GAStudio更多技术文章,请戳这里: QQ技术交流群:277 ...
- 行业思考 | 酷炫动效是否利于你的产品设计?
本文为PMCAFF专栏作者南可出品 前言 写这篇文章的起因是前段时间在Meidum上读到的一篇驳斥dribbble发展现状的文章.文章发表在16年,其中提到:"我不认为dribbble解决了 ...
- 《女神异闻录5》那套酷炫界面的背后,是18年来的始终如一
<女神异闻录5>是近两年最为火热的JRPG游戏之一,它的出色不仅在于剧情暗讽社会黑暗面的主旨展现,那套酷炫而又极富冲击力的动态UI设计也成为了本作的一大亮点,不仅成为了部分同行游戏&quo ...
- 数据可视化?不如用最经典的工具画最酷炫的图(EXCEL/PPT)
前言:大家好,这里是Seon塞翁.做数据分析和做科普是类似的,科普的意义在于将晦涩难懂的科学知识,以让大众更易接受和理解的方式呈现.而数据分析中的数据可视化做的正是如此关键中的关键,即是将数据的特点以 ...
最新文章
- 强化科技硬实力 厚植创新软实力——访中国科学院院士唐本忠
- BZOJ 1666 USACO 2006 Oct. 奶牛的数字游戏
- 动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事
- 【html+css练习】小白使用html+css模拟音乐播放器构造了网页音乐播放器--1
- 关于英汉混合字符串的分隔方法
- 基于Hexo+GitHub Page搭建免费个人博客教程
- Android 支付宝 移动支付接口 快速配置
- oracle关键字 bulk,oracle和sqlserver的一些保留关键字
- 在按钮上绑定一个图案
- 如何查看mysql数据库的引擎/MySQL数据库引擎详解
- Spring整合MyBatis之MapperFactoryBean
- 周期性的方波 matlab,matlab产生方波脉冲和周期性方波信号 - 副本
- 用stata计算同比增长率的两种方法
- android平板电脑卡槽在哪,外观|增加SIM卡槽_酷比魔方 IWORK8_平板电脑评测-中关村在线...
- 遇到过什么印象深刻的bug?
- 区块链技术具体要用到什么开发语言?
- 正确使用#include和前置声明(forward declaration)
- matlab模拟断层成像,基于matlab和nirfast的荧光分子断层成像
- 吉林大学珠海学院计算机网络专插本考试考哪些内容,【考试大纲】2020吉林大学珠海学院(美术设计)专插本考题考试全面解析(分享)...
- 生活充满大量非理性,读《思考,快与慢》有感