标准的鲁宾斯宝盒有54块贴纸,分六个面。我的应用程序中的扫描器只要求你展示五块,并且可以自己计算第六块。
这是有可能的,因为一个真正的立方体不是54个自由选择。六个中心颜色是固定的,每个颜色出现恰好9次,相对颜色始终成对,每个角和边都必须是物理存在的,可以通过合法的转动被达到。展示五个面并且,对于大多数混乱,这些约束会留下第六个唯一的可能排列。因此,应用程序会重建它,而不是要求你翻转立方体以找到第六个角度。当五个面诚实地允许超过一个有效立方体时,它会检测出不确定性并要求第六个。它永远不会安静地猜测一个面。
更难的是实现这一点。过去两次发布期间,扫描器从“点击捕获每个面”到实时摄像头流。 你指向手机并旋转立方体,立即捕获每个面。OpenCV在后台隔离运行,所以预览保持平滑,它在弱光中恢复对比度,并忽略闪光和覆盖贴纸的指头。它还读取相对于立方体自己的调色板而不是固定的调色板列表中的颜色,所以即使是非品牌立方体也可以扫描。
重建的状态直接进入设备上运行的两阶段Kociemba求解器中。我在9.35秒内将混乱的立方体解决为完全解决方案,扫描时间包括在内。
CubeXpert 1.6.1。使用Flutter构建。
​
评论 (0)