def test_angle(self):
     v1 = np.array([1, 0, 0])
     v1.reshape(-1, 1)
     v2 = np.array([1, 1, 0])
     v1.reshape(-1, 1)
     v3 = np.array([1, -1, 0])
     v1.reshape(-1, 1)
     v4 = np.array([0, 1, 0])
     v1.reshape(-1, 1)
     self.assertAlmostEqual(FitnessFunction.angle(v1, v1), 0, 5)
     self.assertAlmostEqual(FitnessFunction.angle(v1, v2), 1.5707969665527344 / 2, 5)
     self.assertAlmostEqual(FitnessFunction.angle(v1, v3), 1.5707969665527344 / 2, 5)
     self.assertAlmostEqual(FitnessFunction.angle(v1, v4), 1.5707969665527344, 5)
 def test_rotate(self):
     v1 = np.array([0, 0, -1])
     v1.reshape(-1, 1)
     genome = np.array([0, 0, 0, math.pi/2, 0])
     v2 = v1.dot(FitnessFunction.rotate(genome))
     self.assertAlmostEqual(v2[0], 0, 5)
     self.assertAlmostEqual(v2[1], 1, 5)
     self.assertAlmostEqual(v2[2], 0, 5)
     genome = np.array([0, 0, 0, 0, math.pi/2])
     v2 = v1.dot(FitnessFunction.rotate(genome))
     self.assertAlmostEqual(v2[0], 0, 5)
     self.assertAlmostEqual(v2[1], 0, 5)
     self.assertAlmostEqual(v2[2], -1, 5)
     genome = np.array([0, 0, 0, 0, math.pi*2.5])
     v2 = v1.dot(FitnessFunction.rotate(genome))
     self.assertAlmostEqual(v2[0], 0, 5)
     self.assertAlmostEqual(v2[1], 0, 5)
     self.assertAlmostEqual(v2[2], -1, 5)
     genome = np.array([0, 0, 0, math.pi/2, math.pi])
     v2 = v1.dot(FitnessFunction.rotate(genome))
     self.assertAlmostEqual(v2[0], 0, 5)
     self.assertAlmostEqual(v2[1], -1, 5)
     self.assertAlmostEqual(v2[2], 0, 5)
     genome = np.array([0, 0, 0, math.pi/2, math.pi*1.5])
     v2 = v1.dot(FitnessFunction.rotate(genome))
     self.assertAlmostEqual(v2[0], 1, 5)
     self.assertAlmostEqual(v2[1], 0, 5)
     self.assertAlmostEqual(v2[2], 0, 5)
     genome = np.array([0, 0, 0, math.pi/2, math.pi*2.5])
     v2 = v1.dot(FitnessFunction.rotate(genome))
     self.assertAlmostEqual(v2[0], -1, 5)
     self.assertAlmostEqual(v2[1], 0, 5)
     self.assertAlmostEqual(v2[2], 0, 5)
     genome = np.array([0, 0, 0, math.pi/2, math.pi/2])
     v2 = v1.dot(FitnessFunction.rotate(genome))
     self.assertAlmostEqual(v2[0], -1, 5)
     self.assertAlmostEqual(v2[1], 0, 5)
     self.assertAlmostEqual(v2[2], 0, 5)
     v1 = np.array([0, 0, -1])
     v1.reshape(-1, 1)
     genome = np.array([0, 0, 0, math.pi/2, math.pi/4])
     v2 = v1.dot(FitnessFunction.rotate(genome))
     self.assertAlmostEqual(FitnessFunction.angle(v2, np.array([-1, 1, 0])), 0, 5)
     it = 1.0
     for x in range(0,int(it*math.pi)):
         for y in range(0,int(it*math.pi)):
             genome = np.array([0,0,0,y/it,x/it])
             v2 = v1.dot(FitnessFunction.rotate(genome))
             self.assertAlmostEqual(np.sqrt(v2.dot(v2)),1,5)