示例#1
0
 def test_forward_back( self ):
     for child in (self.second_child,self.third_child,self.fourth_child):
         matrix = child.transformMatrix( )
         inverse = child.transformMatrix( inverse=True )
         test = array( [10,20,30,1], 'f')
         projected = dot( matrix, test )
         back = dot( inverse, projected )
         assert allclose( test, back ), (test,back, child[-1], matrix, inverse)
示例#2
0
 def test_rotation_array( self ):
     path = self.empty + [
         Transform( rotation = (0,1,0,pi/2 )),
     ]
     matrix = path.transformMatrix()
     projected = dot( array([ 0,0,1,1],'f'),matrix )
     assert allclose( projected, array([1,0,0,1],'f'),atol=.0001), projected
示例#3
0
 def test_nest_simple( self ):
     path = self.empty + [ 
         Transform( translation=(0,0,1), DEF='translate', ),
         Transform( scale=(1,1,.5),DEF='scale'),
     ]
     matrix = path.transformMatrix()
     projected = dot( array([0,0,10,1],'f'), matrix )
     assert allclose( projected, array([0,0,6,1]),atol=.0001), projected
示例#4
0
 def test_complex_transform( self ):
     test = array( [0,0,10,1], 'f' )
     matrix = self.fourth_child.transformMatrix( )
     #inverse = self.fourth_child.transformMatrix( inverse=True )
     projected = dot( test, matrix )
     # projecting out of the screen, then rotated 
     # counter-clockwise 90deg (to go right), then scaled up 2x (to 20)
     # then translated 5 to the right...
     target = array([25,0,0,1],'f')
     assert allclose( projected, target, atol=0.0001), projected
示例#5
0
 def test_perspectiveMatrix( self ):
     """Test that perspective matrix calculation matches expected values"""
     result = transformmatrix.perspectiveMatrix(
         59.999999999999993*DEGTORAD, 1.0, 0.29999999999999999, 50000
     )
     inverse = transformmatrix.perspectiveMatrix(
         59.999999999999993*DEGTORAD, 1.0, 0.29999999999999999, 50000, inverse=True,
     )
     
     expected = array([
         [ 1.73205081,  0.,          0.,          0.,        ],
         [ 0.,          1.73205081,  0.,          0.,        ],
         [ 0.,          0.,         -1.000012, -1.,        ],
         [ 0.,          0.,         -0.6000036,   0.,        ],],'f')
     assert allclose(result,expected), result
     
     test = array([ 20,8,5,1.0 ],'f')
     projected = dot( result, test )
     print(projected)
     unprojected = dot( inverse, projected )
     assert allclose( unprojected, test ), (unprojected, test)
示例#6
0
 def test_calculations( self ):
     for (matrix,point, expected, name) in self._create_test_matrix(
         transformmatrix.transMatrix,
         transformmatrix.rotMatrix,
         transformmatrix.scaleMatrix,
     ):
         try:
             result = dot( point,matrix)
         except TypeError as err:
             sys.stderr.write("""\nF (TypeError):\n\tpoint=%(point)s\n\t%(matrix)s\n"""%(locals()))
         else:
             assert allclose( result, expected, 0, 0.000001 ),(name,matrix,point,expected,result)