Ejemplo n.º 1
0
 def testTrafo(self):
     solver = Solver()
     A = trafo([2, 2])
     solver.eq(A.getmatrix()[0, 0], A.getmatrix()[1, 1]) # restrict to rotation + scaling + translation
     solver.eq(A.getmatrix()[0, 1], -A.getmatrix()[1, 0])
     solver.eq(A*vector([0, 1]), vector([-1, 2]))
     solver.eq(A*vector([1, 0]), vector([1, 4]))
     self.failUnlessEqual(float((A * vector([0, 0]))[0]), 1)
     self.failUnlessEqual(float((A * vector([0, 0]))[1]), 2)
     self.failUnlessEqual(float(A.getmatrix()[0, 0]), 0)
     self.failUnlessEqual(float(A.getmatrix()[0, 1]), -2)
     self.failUnlessEqual(float(A.getmatrix()[1, 0]), 2)
     self.failUnlessEqual(float(A.getmatrix()[1, 1]), 0)
     B = trafo([2, 2])
     solver.eq(A*B, identitytrafo(2))
     self.failUnlessEqual(float((B * vector([0, 0]))[0]), -1)
     self.failUnlessEqual(float((B * vector([0, 0]))[1]), 0.5)
     self.failUnlessEqual(float(B.getmatrix()[0, 0]), 0)
     self.failUnlessEqual(float(B.getmatrix()[0, 1]), 0.5)
     self.failUnlessEqual(float(B.getmatrix()[1, 0]), -0.5)
     self.failUnlessEqual(float(B.getmatrix()[1, 1]), 0)
Ejemplo n.º 2
0
 def testScalars(self):
     solver = Solver()
     a = scalar()
     solver.eq(2 + a, 3)
     self.failUnlessAlmostEqual(float(a), 1)
     self.failUnlessRaises(RuntimeError, solver.eq, 2 + a, 3) # the solver is broken after that
     solver = Solver()
     a = scalar()
     b = scalar()
     solver.eq(2*a, b)
     solver.eq(2 + a + b, 5)
     self.failUnlessAlmostEqual(float(a), 1)
     self.failUnlessAlmostEqual(float(b), 2)
     a = scalar()
     b = scalar()
     solver.eq(a, b)
     self.failUnlessRaises(Exception, solver.eq, a, b)
Ejemplo n.º 3
0
 def testVector(self):
     solver = Solver()
     a = vector(2)
     solver.eq(vector([1, 2]) + a, vector([3, 3]))
     self.failUnlessAlmostEqual(float(a.x), 2)
     self.failUnlessAlmostEqual(float(a.y), 1)
     b = vector(2)
     solver.eq(a*b) # => solver.eq(a*b, 0)
     solver.eq(b.y, 2)
     self.failUnlessAlmostEqual(float(b.x), -1)
Ejemplo n.º 4
0
 def testMatrix(self):
     solver = Solver()
     A = matrix([2, 2])
     solver.eq(A*vector([1, -1]), vector([2, 0]))
     solver.eq(A*vector([1, 1]), vector([0, 2]))
     self.failUnlessAlmostEqual(float(A[0, 0]), 1)
     self.failUnlessAlmostEqual(float(A[0, 1]), -1)
     self.failUnlessAlmostEqual(float(A[1, 0]), 1)
     self.failUnlessAlmostEqual(float(A[1, 1]), 1)
     B = matrix([2, 2])
     solver.eq(A*B, identitymatrix(2))
     self.failUnlessAlmostEqual(float(B[0, 0]), 0.5)
     self.failUnlessAlmostEqual(float(B[0, 1]), 0.5)
     self.failUnlessAlmostEqual(float(B[1, 0]), -0.5)
     self.failUnlessAlmostEqual(float(B[1, 1]), 0.5)
     self.failUnlessAlmostEqual(float((B * vector([2, 0]))[0]), 1)
     self.failUnlessAlmostEqual(float((B * vector([2, 0]))[1]), -1)
     self.failUnlessAlmostEqual(float((B * vector([0, 2]))[0]), 1)
     self.failUnlessAlmostEqual(float((B * vector([0, 2]))[1]), 1)