예제 #1
0
 def test_shear_constructor(self):
     shear = Affine.shear(30)
     assert isinstance(shear, Affine)
     sx = math.tan(math.radians(30))
     seq_almost_equal(tuple(shear), (1,0,0, sx,1,0, 0,0,1))
     shear = Affine.shear(-15, 60)
     sx = math.tan(math.radians(-15))
     sy = math.tan(math.radians(60))
     seq_almost_equal(tuple(shear), (1,sy,0, sx,1,0, 0,0,1))
     shear = Affine.shear(y_angle=45)
     seq_almost_equal(tuple(shear), (1,1,0, 0,1,0, 0,0,1))
예제 #2
0
 def test_is_conformal(self):
     assert Affine.identity().is_conformal
     assert Affine.scale(2.5, 6.1).is_conformal
     assert Affine.translation(4, -1).is_conformal
     assert Affine.rotation(90).is_conformal
     assert Affine.rotation(-26).is_conformal
     assert not Affine.shear(4, -1).is_conformal
예제 #3
0
 def test_is_rectilinear(self):
     assert Affine.identity().is_rectilinear
     assert Affine.scale(2.5, 6.1).is_rectilinear
     assert Affine.translation(4, -1).is_rectilinear
     assert Affine.rotation(90).is_rectilinear
     assert not Affine.shear(4, -1).is_rectilinear
     assert not Affine.rotation(-26).is_rectilinear
예제 #4
0
 def test_is_degenerate(self):
     assert not Affine.identity().is_degenerate
     assert not Affine.translation(2, -1).is_degenerate
     assert not Affine.shear(0, -22.5).is_degenerate
     assert not Affine.rotation(88.7).is_degenerate
     assert not Affine.scale(0.5).is_degenerate
     assert Affine.scale(0).is_degenerate
     assert Affine.scale(-10, 0).is_degenerate
     assert Affine.scale(0, 300).is_degenerate
     assert Affine.scale(0).is_degenerate
     assert Affine.scale(0).is_degenerate
예제 #5
0
def mkA(rot=0, scale=(1, 1), shear=0, translation=(0, 0)):
    return Affine.translation(*translation) * Affine.rotation(
        rot) * Affine.shear(shear) * Affine.scale(*scale)