老师让我们整一个七巧板的project,这里分享一篇七巧板拼凸多边形的文章,仅数学层面无代码实现部分。
附上原文:The Australian Mathematics Teacher vol. 62 no. 2 (ed.gov)
七巧板(Tangrams)
- 问题:可以形成多少凸边形
- 凸性定义:(1)无凹角(re-entrant angles)(2)图中的任意两点可以被完全在图里面的线相连。
有理数和无理数(Rational and irrational)![在这里插入图片描述](https://img-blog.csdnimg.cn/e85ce5b0d7294b669b625b58f0875316.png?type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2hlbnhpbnl1bjkyMQ==,size_12,color_FFFFFF,t_70,g_se,x_16)
-
边长分为两种:有理数(1,2),无理数(√2, 2√2)。
-
每一个七巧板板块都是1-1-√2这样基本三角形的结合体。无论是基本三角形还是七巧板板块,在直角(right angle)的两个邻边是同一种类型的。
-
正方形或者矩形的七巧板,有理边在2个垂直方向。
-
不可能通过这样的L构造凸多边形(有理边和无理边在L的两侧)。所以有理边和无理边位于两个不同的垂直集合,角度为45°。
能拼成的多边形(polygons)
-
假设有s个45°的角,r个直角,l个135°的角的n角形。则有,s + r + l = n(1)和45s + 90r + 135l = (n – 2)180(2),将l=n-r-s代入(2)可得:2s + r = 8 – n(3)。
-
由公式2s + r = 8 – n(3)我们可以推断,如果s>=0,r>=0,那么n<=8。对此我们列一个表来描述可能的情况。
-
将凸多边形的有理量放在水平和垂直,那上面这十种可能是由一个矩形和一个角组成(可能去掉顶端了的45°角)。
-
把七巧板最大的边相加:x远小于20。我们可以算七巧板所有的面积得到这个凸边形的面积。
-
x、y是矩形的边长,a、b、c、d是被截断的三角形的直角边长。假设 x ≥ y, 可以得到 a + b ≤ x, c + d ≤ x, a + d ≤ y, b + c ≤ y。将每个七巧板最长边相加表明x长度远小于20,并且得到拼出来的多边形面积是8。
我们可以得到2xy – (a2 + b2 + c2 + d2) = 16.
用以下代码找到:x, y, a, b, c, d.
-
我们可以得到23个,但是其中有些是等价的可以排除:3-1、7-8-9、11-12-13、17-18。
-
同时,我们可以考虑排除以下情况:(1)case23太窄,放不下大的七巧板(2)case19需要10√2的非理性边(周长),我们可以注意到,七巧板所有的非理性边(√2)也有10个(10√2)。但是case19的平行四边形不能同时用到2个非理性边√2(有一个在内部),因此少了一个也不能满足10√2的非理性边(3)case17和case22需要8√2的非理性边,但是平行四边形和中等大小的三角形(√2-√2-2)都会在内部损失3√2,凑不到外边周长的8√2。
-
排除掉以上几种,就是最终能够拼七巧板的结果,13种: