您需要做的是为拼图游戏的每个面定义一个索引词汇表,这样右侧边缘的索引可以告诉您相应的左侧边缘的索引是什么(例如,简单的词汇表:"凸"和"凹",在表面上具有"凸",暗示在匹配的相对面上"凹"),然后根据索引词汇对每个片段进行分类.词汇越精细,面部匹配越多,你的算法就会越快,但你实现它.(例如,你可能有"平边,直边倾斜 - 左边,直边倾斜 - 右边,凹面,凸面,旋钮,旋钮孔......).我们假设索引方案抽象了边缘的实际形状,并且有一个谓词"精确拟合(piece1,edge1,piece2,
目标是增长一组区域,例如,一组连接件,直到不再可能生长区域.我们首先使用唯一的区域名称标记所有部分,每个部分1个,并且所有边缘都是无与伦比的.然后我们按任何顺序枚举片段边缘.对于具有边E的每个枚举的片P,使用索引方案来选择可能匹配的片/边对.检查完全适合的谓词; 最多一件Q,边缘F,完全匹配.将P和Q的区域组合在一起形成一个大区域.重复.我认为这解决了这个难题.