多边形,多义词和谜题

直到最近,我才知道polyshape对象的MATLAB。现在我可以用多义词来模拟一个非凡的谜题。

内容

谜题

网站游戏的艺术来自圣地亚哥的一些人,有超过200个谜题。最近,他们最受欢迎的谜题之一,强大的奶酪引起了我的注意。这个想法是在框架内移动塑料奶酪片,以便创造一个足够大的洞来容纳小塑料老鼠。然而,当我最后一次检查时,强力奶酪已经售罄了。不想被谜题本身的不可用性所劝阻,也不知道解决方案,我开始构建一个模拟器。

不是T

我以为强力奶酪会是T-puzzle几年前我很喜欢但是,与T不同的是,奶酪的几何形状不能用简单的矩形块来建模。我需要帮助。Steve Eddins回答了我的请求,并告诉我MATLAB的“多面体”。于是我就写了这篇博文。

一片奶酪

奶酪片的“自拍照”提供了一个例子polyshape.它有弯曲的边界和一个洞。MATLAB文档polyshape说这个多边形.在我的数学世界里,多边形不能有弯曲的边界或洞。但是,我想我太迂腐了。

我从这张巨型奶酪拼图的照片开始。

谜题“Cheese_puzzle.png”);

两行代码L * a * b颜色模型中找到区域照片看起来像奶酪。

[L,a,b] = imsplit(rgb2lab(puzzle));Mask = a > 30;间谍(面具)

Steve提供了一个旋转的函数面具成一个polyshape对象。

Slice = my_polyshapes(mask);

一个重载情节函数生成自拍照

Sliceplot = plot(切片,...“facecolor”cheese_yellow,...“facealpha”1);

我的第一个解决方案

我没有使用人工智能或模拟退火或任何其他现代技术来寻找解决方案。我只是在学习多义词和编程模拟器时随便翻了翻。只有我和一个真正的鼠标。不,不是真正的现实鼠标。你知道我说的那种。

这个解决方法正确吗?

我几乎要写一篇博客文章,声称这是《Mighty Cheese》设计师心中的解决方案。但我不确定。我的解决方案利用了切片外边缘的空白空间。这些差距有多大?那时我还没有一个真正的物理难题来测量公差。

剧透警告!

我现在很高兴我没有发布那个“解决方案”。它不正确,也不漂亮。

这个谜题并不像看上去那么简单。事实上,这个解决方案很难找到,而且非常优雅。如果你想尝试自己解决这个问题,停止阅读这篇文章,把这个地方收藏起来,然后再回来。

第二个解决方案

我早该知道,这个谜题在互联网上已经不是什么秘密了。在很多地方花10美元就能买到,YouTube上也提供了几种解决方案。但我很高兴直到几周前我才看到他们中的任何一个。

当我在“Cheese_puzzle.png”上做了更仔细的测量,并有了一个更精确的模型来模拟时,很明显,我宝贵的第一个解决方案并不适合。

方孔中的圆钉

没有人说老鼠必须整齐地放进一个直径刚好的圆洞里。一旦你意识到你可能在寻找一个非圆形的洞,你就在寻找解决方案的路上了。

θ

拼图几何的关键是这幅图中的紫色轴。它们在突出的切片尖端的中心孔的一点上成直角交叉。紫色轴和橙色垂直/水平轴之间的角度可以在照片上准确测量,其他一切都可以遵循。角度是

= atand((y(b)-y(a))/(b-a)) = 11.62度

Polyshapes

我在第一个解决方案中使用的掩模让我开始使用多义词,但我最终放弃了它。直接从边界周围的点列表生成一个多形体是很容易的,就像这样。

解决方案

原来奶酪片上的三个洞似乎没有任何用处。所以,我移动了它们,让它们在这个模拟中扮演重要的角色。将左上方的两个三角形切片合并成一片。以180-theta = 168.38度的角度旋转四个切片。从中心洞的四个直角到拼图的四角,而外角形成一个中心正方形,大小足以容纳鼠标。

这真的很优雅。

这个谜题从何而来?它的设计涉及到什么数学?

软件

我的代码在这里:Mighty_Polyshape.m




由MATLAB®R2022b发布

|

评论

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

Baidu
map