我今天打开我的日历,里面有一个谜题。有六 block ,我想我必须把它们做成一个立方体……我试图解决它但失败了。所以我决定尝试用编程来解决它....
我将它们制作成多边形(不确定这是否是个好主意),但不知道如何旋转它们和/或检查任何形状是否与任何其他形状发生碰撞。
形状是这些:
TL;DR:我正在寻求帮助来检查这些形状的每一种可能组合,看看它们是否构成一个立方体。换句话说,我如何旋转和检查多边形(或代表这些部分的其他东西)是否相交?
最佳答案
将它们变成多边形并不是这个问题的正确抽象。
看,您拥有的是立方体的 6 个面,但现在您必须弄清楚如何旋转它们。每个多边形的边上都有 12 个小方 block ,这些方 block 要么开要么关,并且必须与旁边的小方 block 匹配。这是一个非常离散的问题。
整个立方体有8(顶点)+12*2(边)个边上的小立方体。
当每个面放入立方体时,都会占据一些小立方体。
你需要 1) 制作一个映射,将面映射到给定面上的整个立方体中,在给定的方向上 2)搜索没有小立方体被占用两次的配置。
关于algorithm - 将六个平面形状变成一个立方体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13748789/