火遍全网的《啥是佩奇》8分钟完整版

「啥是佩奇?」

「我用 Mathematica 画给你看!」

最近被一部微电影《啥是佩奇》给刷屏了。

如果有人问你,「啥是佩奇」,该怎么办呢?

如果你会Mathematica就好办了——「我用 Mathematica 画给你看!」

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

啥是佩奇——结构分析

我们先来分析一下佩奇的脸部结构:

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

首先,我们把佩奇的脸拆分成简单的几何结构,然后再用参数方程来描述,最后就可以调用Mathematica中的ParametricPlot命令来绘图了。

分析之后,可以发现佩奇的脸主要由圆形、椭圆、抛物线,以及少量不规则形态构成。上图之中,红色曲线表示圆形或椭圆形;蓝色曲线表示抛物线;而红色虚线表示由圆形变换所得的曲线;绿色曲线表示抛物线与圆组合而成的曲线。

等等

啥是 Mathematica?

Mathematica 是备受科研人员喜爱的编程工具,它神通广大,详细了解请点下面的链接:

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

咳咳

下面是代码教程——

(视频教程在文末)

参数方程绘制

1.佩奇的脸:

首先,我们来绘制整体的脸型,也就是曲线一。这种螺旋变大的曲线,可以当作是圆的一个变体,在不断顺时针旋转的过程中,半径也在不断增大,这样我们就有了第一个曲线(注意,在后面的文章中,变量t的取值范围都是01):

(1 + t^10){1Cos[[Pi]/6 - 2[Pi] (1/16 + 15/16t)], Sin[[Pi]/6 - 2 [Pi](1/16 + 15/16t)]}


啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

2.佩奇的下巴:

然后,我们再画四号曲线,也就是下巴。这里为了简单,我们用抛物线来绘制。经过几次试错,我们得到了这个曲线:

{t*4/5+ 1, 1/3t^2+ 1/7}


啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

3.佩奇的鼻子:

最后我们画上猪鼻子,这是一个椭圆加上两个小圆:

{1/4 Cos[2 [Pi] t] + 8/5, 1/3 Sin[2 [Pi] t] + 7/10}, {1/16 Cos[2 [Pi] t] + 8/5 - 1/8, 1/16 Sin[2 [Pi] t] + 7/10}, {1/16 Cos[2 [Pi] t] + 8/5 + 1/8, 1/16 Sin[2 [Pi] t] + 7/10}


啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

4.佩奇的眼睛:

同样的道理,我们再绘制两个猪眼睛:

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

5.佩奇的嘴巴:

然后我们来画嘴。为了简化,同样用抛物线来绘制佩奇的嘴巴:

{t - 1/3, (t - 2/5)^2 - 1/2}


啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

6.佩奇的耳朵:

最后,我们来绘制佩奇的耳朵(突然发现佩奇的耳朵和一般的猪不一样啊……)。通过观察,我们可以发现,佩奇的耳朵可以看作是一个在极坐标系中的:

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

那么我们就可以将它转化到笛卡尔坐标系下,用参数方程来描述。这里再经过几次试错之后,就能得到耳朵的方程:

{(3/2 - 2 (t - 1/2)^2) Cos[ t/3 + (2 [Pi])/3], (3/2 - 2 (t - 1/2)^2) Sin[ t/3 + (2 [Pi])/3]}, {(3/2 - 2 (t - 1/2)^2) Cos[ t/3 + [Pi]/2], (3/2 - 2 (t - 1/2)^2) Sin[ t/3 + [Pi]/2]}


啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

至此,大功告成!

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

原版小猪佩奇

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

Mathematica 版小猪佩奇

和原图相比,是不是很像呢?

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

和老爷爷做的佩奇相比,谁更像呢?

附录1:Mathematica源代码

ParametricPlot[{(1 + t^10) {1 Cos[[Pi]/6 - 2 [Pi] (1/16 + 15/16 t)], Sin[[Pi]/6 - 2 [Pi] (1/16 + 15/16 t)]}, {t*4/5 + 1, 1/3 t^2 + 1/7}, {1/4 Cos[2 [Pi] t] + 8/5, 1/3 Sin[2 [Pi] t] + 7/10}, {1/16 Cos[2 [Pi] t] + 8/5 - 1/8, 1/16 Sin[2 [Pi] t] + 7/10}, {1/16 Cos[2 [Pi] t] + 8/5 + 1/8, 1/16 Sin[2 [Pi] t] + 7/10}, 0.15 {Cos[2 [Pi] t], Sin[2 [Pi] t] + 0.8/0.15}, 0.15 {Cos[2 [Pi] t] + 0.6/0.15, Sin[2 [Pi] t] + 0.9/0.15}, 0.05 {Cos[2 [Pi] t], Sin[2 [Pi] t] + 0.8/0.05}, 0.05 {Cos[2 [Pi] t] + 0.6/0.05, Sin[2 [Pi] t] + 0.9/0.05}, {t - 1/3, (t - 2/5)^2 - 1/2}, {(3/2 - 2 (t - 1/2)^2) Cos[ t/3 + (2 [Pi])/3], (3/2 - 2 (t - 1/2)^2) Sin[ t/3 + (2 [Pi])/3]}, {(3/2 - 2 (t - 1/2)^2) Cos[ t/3 + [Pi]/2], (3/2 - 2 (t - 1/2)^2) Sin[ t/3 + [Pi]/2]}}, {t, 0, 1}, PlotRange -> All]


附录2:数学表达式

轮廓:

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

鼻子:

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

眼睛:

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

嘴巴:

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

耳朵:

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

视频小教程

教你用 Mathematica 画小猪佩奇

拉票时刻

《环球科学》杂志和旗下公众号“科研圈”评出了“2018 明星学术公众号”入围榜单,同时也拉开了TOP 10评选的大幕。

集智俱乐部”顺利TOP21大名单,如果您喜欢集智俱乐部的内容,请长按识别下方二维码,或点击“阅读原文”,为集智投上宝贵一票,谢谢!

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

无需注册、无需登录、无需任何个人信息

扫码即可为集智投票(倒数第二排)

笔芯❤️


啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部
集智俱乐部QQ群|877391004

商务合作及投稿转载|swarma@swarma.org

◆◆◆

搜索公众号:集智俱乐部

加入“没有围墙的研究所”

啥是佩奇?我用 Mathematica 画给你看!(内附代码/视频教程)-集智俱乐部

让苹果砸得更猛烈些吧!

点击左下方 |阅读原文|,为集智投票!

原文始发于微信公众号(集智俱乐部):集智