彭罗斯和傅里叶设计扑克牌

MathWorks正在制作一副扑克牌,将在我们的贸易展览摊位上作为礼物赠送。卡片的设计是基于Penrose Tilings和有限傅里叶变换矩阵的图。

内容

彭罗斯瓷砖

这是彭罗斯瓷砖的一个例子。

彭罗斯平铺是平面的非周期性平铺,以牛津大学名誉物理学家罗杰·彭罗斯(Roger Penrose)的名字命名,他在20世纪70年代研究了这种平铺。MathWorks的Steve Eddins写了一篇关于他的MATLAB程序生成Penrose瓷砖的论文。我将在这篇博客文章中包括这篇论文。史蒂夫还将他的论文和代码提交给了MATLAB中央文件交换系统,彭罗斯菱形瓷砖

的西装

仔细查看示例平铺。它完全由两个菱形制成,一个是金色的,一个是蓝色的。每个菱形依次由两个等腰三角形构成。这些形状启发了MathWorks设计师Gabby Lydon重新想象了一副纸牌中四种花色的传统符号。

这是方块和红心。

这是梅花和黑桃。

脸牌

三角形和菱形的主题在面牌中继续。

后面

卡片的背面有两个数学对象,我在这篇博客中描述过。五年前,我写了一篇关于我们标志的五篇系列文章,从第一部分.我还写了由有限傅里叶变换矩阵

从质数开始。

N = 31;

对单位矩阵的列进行傅里叶变换。

F = fft(眼睛(n,n));

情节。因为31是质数,所以这是31个点的完整图。圆周上的每一点都与其他点相连。

p = plot(F);轴广场

颜色太鲜艳了。

Color = get(gca,“colororder”);集(p,“颜色”颜色(:))

现在图形设计软件接管,并为标志腾出空间。

克里夫的实验室

所有这些都让我想起了两款与fft相关的应用MATLAB数值计算fftgui而且fftmatrix.我已经把它们加到克利夫实验室了版本3.9.这是来自fftmatrix当n = 12时。因为12不是质数,所以这不是一个完全连通图。你可以改变矩阵的顺序和要变换的列。

这是史蒂夫关于彭罗斯瓷砖的论文。

彭罗斯菱形瓷砖

Steve Eddins著

这个故事是关于像这样创建平面平铺的:

这是彭罗斯瓷砖的一个例子。彭罗斯瓷砖是一种非周期性瓷砖,以罗杰·彭罗斯的名字命名,他在20世纪70年代研究了这种瓷砖。这种特殊的形状,由两个菱形组成,叫做aP3瓷砖

四种三角形

彭罗斯P3瓷砖的构造基于4种等腰三角形。这些类型被标记为A、A'、B和B'。A和A'三角形的顶角是36度,B和B'三角形的顶角是72度。

subplot(2,2,1) showlabeled三角形(aTriangle([],-1,1)) subplot(2,2,2) showlabeled三角形(apTriangle([],-1,1)) subplot(2,2,3) showlabeled三角形(bTriangle([],-1,1)) subplot(2,2,4) showlabeled三角形(bpTriangle([],-1,1))
顶点= -1.0000 + 0.0000i 0.0000 + 3.0777i 1.0000 + 0.0000i顶点= -1.0000 + 0.0000i 0.0000 + 3.0777i 1.0000 + 0.0000i顶点= -1.0000 + 0.0000i 0.0000 + 0.7265i 1.0000 + 0.0000i顶点= -1.0000 + 0.0000i 0.0000 + 0.7265i 1.0000 + 0.00000 i

三角函数与三角表示

在继续之前,让我们停下来看看函数是什么aTriangleapTrianglebTriangle,bpTriangle做的。

这个函数aTriangle有三个参数:aTriangle(顶点、左、右).这三个参数中的每一个都是表示一个三角形顶点的复平面中的一个点。指定任意两个点,将第三个点作为[],aTriangle为你计算缺失的顶点。下面的例子展示了如何计算一个a型三角形,它的底在实轴上,从-1延伸到1。

t_a =三角形([],-1,1)
t_a = 1×4表顶端左右类型  _________ ____ _____ ____ 我1 1 0 + 3.0777

结果作为一个表返回,这很方便,因为我们将创建这些三角形的大型集合,并且能够使用符号引用三角形的不同顶点是很有帮助的t.Apext.Left,t.Right

这个函数showLabeledTriangles获取一个三角形表并显示所有三角形,并标记三角形类型和它们的边。(我们将在下面讨论更多关于侧面标签的问题。)

t_b = bTriangle(t_a.Apex,t_a.Right,[]);T = [t_a;t_b] clf showlabeled三角形(T)
T = 2×4表顶点左右类型_____________ _____________ ____ 0+3.0777i -1 1+0i A 0+3.0777i 1 2.618+ 4.97998 i B顶点= -1.0000 + 0.0000i 0.0000 +3.0777i 1.0000 + 0.0000i 1.0000 + 0.0000i 0.0000 +3.0777i 2.6180 + 4.97998 i

三角形边标签

三角形两侧的标记帮助我们区分A和A'三角形,以及B和B'三角形。例如,A三角形在左侧有圆形标记(假设顶点朝向顶部),而A'三角形在右侧有圆形标记。

侧面标签还可以帮助我们确认彭罗斯瓷砖中三角形的排列是否正确。在Penrose P3平铺中,只有当侧边标记对齐在一起且相同时,三角形才允许共享一条边。例如,在上面所示的两个三角形中,三角形右边缘的正方形标记与B三角形左边缘的正方形标记对齐。如果我们用B'三角形代替,标记就不一样了。

t_bp = bpTriangle(t_a.Apex,t_a.Right,[]);T = [t_a;t_bp];showLabeledTriangles (T)
顶点= -1.0000 + 0.0000i 0.0000 + 3.0777i 1.0000 + 0.0000i 1.0000 + 0.0000i 0.0000 + 3.0777i 2.6180 + 4.97998 i

制作两种菱形

在彭罗斯P3瓷砖中,一个菱形是由A和A'三角形制成的,另一个是由B和B'三角形制成的。

Subplot (1,2,1) r1 = [...aTriangle ([], 1, 1) apTriangle ([], 1, 1)];showlabeled三角形(r1) subplot(1,2,2) r2 = [...bTriangle ([], 1, 1) bpTriangle ([], 1, 1)];showLabeledTriangles (r2)
顶点= -1.0000 + 0.0000i 0.0000 + 3.0777i 1.0000 + 0.0000i 1.0000 - 3.0777i -1.0000 + 0.0000i 0.0000顶点= -1.0000 + 0.0000i 0.0000 + 0.7265i 1.0000 + 0.0000i 1.0000 + 0.0000i 0.0000 - 0.7265i -1.0000 + 0.00000 i

三角分解

P3瓷砖的构建从一个三角形开始,然后依次分解它。这四种三角形的每一种都有不同的分解规则。

一个A三角形可以分解成一个A三角形和一个B'三角形。

t_a =三角形([],-1,1);t_a_d = decomposetriangle (t_a) clf subplot(1,2,1) showlabeledtriangle (t_a) lims =轴;subplot(1,2,2) showlabeled三角形(t_a_d)轴(lims)
t_a_d = 2×4表顶点左右类型_______________ _________ _______________ ____ -1+0i 1+0i 0.61803+1.1756i A 0.61803+1.1756i 0+3.077 i -1+0i Bp顶点= -1.0000 + 0.0000i 0.0000 +3.077 i 1.0000 + 0.0000i 0.6180 +1.1756i 0.0000 +3.077 i 0.6180 +1.1756i 0.6180 +1.1756i -1.0000 + 0.0000i

的非常简短的实现decomposeATriangle看看这是怎么做到的。

函数out = decomposetriangle (in)
Out = [...三角形(in.Left,in.Right,[]) bpTriangle([],in.Apex,in.Left)];

较小的A三角形是通过将其顶点置于输入三角形的左顶点,并将其左顶点置于输入三角形的右顶点来确定的。

较小的B'三角形是通过将其左顶点放在输入三角形的顶点上,将其右顶点放在输入三角形的左顶点上来确定的。

其他三种三角形的分解也有类似的规则。

t_ap = apTriangle([],-1,1);t_ap_d = decomposeApTriangle(t_ap) clf subplot(1,2,1) showlabeled三角形(t_ap) lims =轴;subplot(1,2,2) showlabeledtriangle (t_ap_d)
t_ap_d = 2×4表顶点左右类型________________ ________________ ______________ 1+0i -0.61803+1.1756i -1+0i Ap -0.61803+1.1756i 1+0i 0+3.0777i B顶点= -1.0000 + 0.0000i 0.0000 +3.0777i 1.0000 + 0.0000i顶点= -0.6180 +1.1756i 1.0000 + 0.00000 i 1.0000 + 0.0000i -0.6180 +1.1756i 0.0000 +3.0777i
t_b = bTriangle([],-1,1);t_b_d = decomposeBTriangle(t_b) clf subplot(2,1,1) showlabeledtriangle (t_b) lims =轴;subplot(2,1,2) showlabeledtriangle (t_b_d)
t_b_d = 3×4表顶点左右类型_________________ ___________ _________________ ____ 0.23607+0i 1+0i 0+0.72654i B 0.23607+0i 0+0.72654i -0.38197+0.44903i A -0.38197+0.44903i -1+0i 0.23607+0i Bp顶点= -1.0000 + 0.00000 i 0.2361 + 0.0000i 0.0000 + 0.7265i 1.0000 + 0.7265i 0.2361 + 0.0000i -0.3820 + 0.4490i -1.0000 + 0.0000i 0.2361 + 0.2361 + 0.4490i - 0.0000i -0.3820 + 0.4490i 0.2361 + 0.0000i
t_bp = bpTriangle([],-1,1);t_bp_d = decomposeBpTriangle(t_bp) clf subplot(2,1,1) showlabeledtriangle (t_bp) lims =轴;subplot(2,1,2) showlabeled三角形(t_bp_d)轴(lims)
t_bp_d = 3×4表顶点左右类型_________________ _________________ _______________ -0.23607+0i 0+0.72654i -1+0i Bp -0.23607+0i 0.38197+0.44903i 0+0.72654i Ap 0.38197+0.44903i -0.23607+ 0.23607+0i 1+0i B顶点= -1.0000 + 0.7265i -0.2361 + 0.0000i -1.0000 + 0.0000i 0.3820 + 0.4490i 0.000 + 0.7265i 0.3861 + 0.2361 + 0.0000i 0.0000 + 0.4490i 1.0000 + 0.7265i 0.2361 + 0.3820 + 0.4490i 1.0000 + 0.000 i

从三角形到菱形

让我们从一个B三角形开始,将它连续分解三次。

t = bTriangle([],-1,1);t = decomposetriangle (t) t = decomposetriangle (t) t = decomposetriangle (t)
t = 3×4表顶端左右类型  _________________ ___________ _________________ ____ 0.23607 + 0我1 + 0 0 + 0.72654我B 0.23607 + 0 0 + 0.72654 -0.38197 -0.38197 + 0.44903 + 0.44903我1 + 0我Bp t = 0.23607 + 0 8×4表顶端左右类型  _________________ _________________ _________________ ____ 0.38197 + 0.44903我0 + 0.72654 0.23607 + 0 B 0.38197 + 0.44903我0.52786 + 0.23607 + 0 0我1 + 0.52786 + 0 0 0我Bp 0.38197 + 0.44903 + 0.72654我-0.1459 + -0.38197 + 0.44903 0.27751 -0.1459 + 0.27751我0.23607 + 0 0 + 0.72654基点-0.52786 + -0.38197 + 0.44903 0我1 + 0我Bp -0.52786 + 0 -0.1459 + 0.27751 -0.38197 + 0.44903我美联社-0.1459 + 0.27751 -0.52786 0.23607 + 0 + 0我B t = 21×4表顶端左右类型  __________________ _________________ __________________ ____ 0.1459 + 0.27751我0.23607 + 0 0.38197 + 0.44903 B 0.1459 + 0.27751我0.38197 + 0.44903 0.23607 0.23607 + 0.55503 + 0.55503我0 + 0.72654我Bp 0.1459 + 0.27751 0.23607 0.47214 + 0.17151 + 0.52786 + 0 0我我0.17151 0.47214 + 0.38197 + 0.44903 0.23607 0.52786 + 0我Bp 0.76393 + 0.17151 + 0我Bp 1 + 00.76393 + 0.17151我0.47214 + 0.17151 0.52786 0.76393 + 0我美联社0.47214 + 0.17151 + 0.17151我0.38197 + 0.44903 B -0.38197 + 0.44903我-0.1459 + 0.27751 -0.09017 -0.09017 + 0.44903 + 0.44903我0 + 0.72654我Bp 0.1459 + -0.38197 + 0.44903 0.27751 0.23607我-0.1459 + 0.27751 + 0我Bp 0.1459 + 0.27751 -0.09017 -0.1459 + 0.27751 + 0.44903我美联社-0.09017 + 0.44903我0.1459 + 0.27751 0 + 0.72654 B -0.61803 + 0.27751我-0.52786 + 0 -0.38197 -0.7082我Bp -0.61803 + 0.27751 + 0.44903 + 0我美联社-0.7082 + -0.52786 + 0 0我-0.61803 + 0.27751 1 + 0 B-0.38197+0.44903i -0.2918+0.17151i -0.1459+0.27751i Ap -0.2918+0.17151i -0.38197+ 0.38151 i -0.52786+0i B -0.055728+0i 0.23607+0i -0.1459+0.27751i B -0.055728+0i -0.1459+0.27751i A -0.2918+0.17151i -0.52786+0i -0.055728+0i Bp
clf showLabeledTriangles (t)
顶点我0.1459 + 0.2775 = 0.2361 + 0.0000 0.3820 + 0.4490我0.3820 + 0.4490 0.1459 0.2361 + 0.5550 + 0.2775我0.0000 + 0.7265我0.2361 + 0.5550 0.1459 0.5279 + 0.0000 + 0.2775我0.2361 + 0.0000我0.4721 + 0.1715 0.3820 0.4721 + 0.1715 + 0.4490我0.2361 + 0.0000我0.5279 + 0.0000 0.7639 1.0000 + 0.0000 + 0.1715我0.4721 + 0.1715我0.7639 + 0.1715 0.5279 0.7639 + 0.1715 + 0.0000我0.4721 + 0.1715我0.3820 + 0.4490 -0.1459 -0.0902我-0.3820 + 0.4490 + 0.2775 + 0.4490我-0.0902 + 0.0000 + 0.72650.4490我-0.3820 + 0.4490 -0.1459 0.2361 0.1459 + 0.2775 + 0.2775我我-0.0902 + 0.4490 + 0.0000 0.1459 + 0.2775我-0.1459 + 0.2775 0.1459 -0.0902 + 0.4490 + 0.2775我0.0000 + 0.7265我-0.5279 + 0.0000 -0.6180 -0.3820 + 0.4490 + 0.2775我-0.7082 + 0.0000我-0.6180 + 0.2775 -0.5279 -0.6180 + 0.2775 + 0.0000我-0.7082 + 0.0000我-1.0000 + 0.0000 -0.2918 -0.3820 + 0.4490 + 0.1715我-0.1459 + 0.2775我-0.3820 + 0.4490 -0.2918 0.2361我-0.5279 + 0.0000 + 0.1715 + 0.0000我-0.1459 + -0.0557 + 0.00000.2775i -0.1459 + 0.2775i -0.0557 + 0.0000i -0.2918 + 0.1715i -0.5279 + 0.0000i -0.2918 + 0.1715i -0.0557 + 0.0000i

现在,标签成了绊脚石。

showTriangles (t)

这样好多了,但是菱形很难形象化因为三角底已经画出来了。让我们切换到一个不同的可视化函数,用彩色阴影绘制菱形,没有三角形基底。

showTiles (t)

我们再做五层分解。

k = 1:5 t = decomposetriangle (t);结束num_triangle = height(t)
num_三角形= 2584

现在我们有很多三角形。让我们来看看。

clf showTiles (t)

放大。

轴([-0.3 0.2 0.1 0.5])

有趣的是,您可以通过在三角形中插入弧或其他形状来增加可视化效果。你只需要让所有不同类型的三角形匹配起来。的showDecoratedTiles函数显示了一种可能的变化。

clf showDecoratedTiles(t)轴([-0.2 0.1 0.2 0.4])

从多个三角形开始

另一件有趣的事情是尝试从多个三角形的模式开始,而不是只有一个。你只需要排列最初的三角形使它们满足边匹配规则。让我们使用交替的a和a '三角形共享一个公共顶点的圆形模式。

T =表;K = 1:5 thetad = 72*(K -1);t_a =三角形(0,cosd(thetad) + 1i*sind(thetad),[]);t_ap = apTriangle(0,t_a.Right,[]);T = [T;t_a;t_ap];结束showLabeledTriangles (t)
顶点我0.0000 + 0.0000 = 1.0000 + 0.0000 0.8090 0.8090 + 0.5878 + 0.5878我0.0000 + 0.0000我0.3090 + 0.9511 0.3090 + 0.9511 0.0000 + 0.0000我-0.3090 + 0.9511 -0.3090 0.0000 + 0.0000 + 0.9511我-0.8090 + 0.5878我-0.8090 + 0.5878 0.0000 -1.0000我-1.0000 + 0.0000 + 0.0000 + 0.0000我0.0000 + 0.0000 -0.8090 - 0.5878 -0.8090 - 0.5878我0.0000 + 0.0000 -0.3090 - 0.9511 -0.3090 - 0.9511我0.0000 + 0.0000 0.3090 - 0.9511 0.3090 - 0.9511我0.0000 + 0.0000 0.8090 - 0.5878 0.8090 - 0.58780.0000 + 0.0000i 1.0000 + 0.0000i
T2 = t;k = 1:4 t2 = decomposetriangle (t2);结束clf showDecoratedTiles (t2)




发布与MATLAB®R2018a

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。