我正在尝试模拟魔方。为了检测用户是否已经实际解决了Cube,我想记住所有初始位置向量,然后进行比较。
然而,当你启动我的程序并弄乱立方体时,然后按'k'解决它你可以在控制台中看到实际上值是相同的,但是它们具有不同的精度。例如,z值是-0.99999而不是-1。这个缺陷的结果是即使值非常相同,程序仍然不会认为Cube已经解决了。我想在旋转时,当对矢量进行计算时,精度会发生变化,因此最终值会有所不同。我怎么解决这个问题?要打印出初始位置矢量和当前矢量,请在任何时候按“a”键:)
{{1}}
答案 0 :(得分:0)
解决方案很简单,您需要以给定的精度使用numpy.allclose方法。
for surface in self.wholeSurfaces:
print "%s\n%s" % (self.initialPosition[i], powierzchnia.pos)
if np.allclose(self.initialPosition[i], surface.pos.astuple(), 1e-5, 1e-5): print "are equal"
else: print "arent equal"
i+=1