<s> import numpy as np <EOL> from numpy . testing import assert_allclose <EOL> from nose . tools import raises <EOL> from menpo . shape import PointCloud <EOL> from menpo . transform import ( Homogeneous , Scale , TransformChain , <EOL> NonUniformScale , <EOL> UniformScale , Translation , Similarity , Rotation , <EOL> AlignmentUniformScale , AlignmentRotation ) <EOL> def homog_compose_before_nonuniformscale_test ( ) : <EOL> homog = Homogeneous ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> s = NonUniformScale ( [ <NUM_LIT:3> , <NUM_LIT:4> ] ) <EOL> res = homog . compose_before ( s ) <EOL> assert ( type ( res ) == Homogeneous ) <EOL> assert_allclose ( res . h_matrix , np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:3> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> def homog_compose_after_uniformscale_test ( ) : <EOL> homog = Homogeneous ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> s = UniformScale ( <NUM_LIT:3> , <NUM_LIT:2> ) <EOL> res = homog . compose_after ( s ) <EOL> assert ( type ( res ) == Homogeneous ) <EOL> assert_allclose ( res . h_matrix , np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:3> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:3> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> def rotation_compose_before_homog_test ( ) : <EOL> rotation = Rotation ( np . array ( [ [ <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> homog = Homogeneous ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> res = rotation . compose_before ( homog ) <EOL> assert ( type ( res ) == Homogeneous ) <EOL> def translation_compose_after_homog_test ( ) : <EOL> homog = Homogeneous ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> t = Translation ( [ <NUM_LIT:3> , <NUM_LIT:4> ] ) <EOL> res = t . compose_after ( homog ) <EOL> assert ( type ( res ) == Homogeneous ) <EOL> def homog_compose_before_alignment_nonuniformscale_test ( ) : <EOL> homog = Homogeneous ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> scale = UniformScale ( <NUM_LIT> , <NUM_LIT:2> ) <EOL> source = PointCloud ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ - <NUM_LIT:1> , - <NUM_LIT:5> ] , <EOL> [ <NUM_LIT:3> , - <NUM_LIT:5> ] ] ) ) <EOL> target = scale . apply ( source ) <EOL> s = AlignmentUniformScale ( source , target ) <EOL> res = homog . compose_before ( s ) <EOL> assert ( type ( res ) == Homogeneous ) <EOL> def homog_compose_after_alignment_rotation_test ( ) : <EOL> homog = Homogeneous ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> source = PointCloud ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> ] , <EOL> [ - <NUM_LIT:1> , - <NUM_LIT:5> ] , <EOL> [ <NUM_LIT:3> , - <NUM_LIT:5> ] ] ) ) <EOL> r = AlignmentRotation ( source , source ) <EOL> res = homog . compose_after ( r ) <EOL> assert ( type ( res ) == Homogeneous ) <EOL> @ raises ( ValueError ) <EOL> def scale_compose_after_inplace_homog_test ( ) : <EOL> homog = Homogeneous ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> s = Scale ( [ <NUM_LIT:3> , <NUM_LIT:4> ] ) <EOL> s . compose_after_inplace ( homog ) <EOL> def homog_compose_after_inplace_scale_test ( ) : <EOL> homog = Homogeneous ( np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> s = Scale ( [ <NUM_LIT:3> , <NUM_LIT:4> ] ) <EOL> homog . compose_after_inplace ( s ) <EOL> assert_allclose ( homog . h_matrix , np . array ( [ [ <NUM_LIT:0> , <NUM_LIT:4> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:3> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] ] ) ) <EOL> def uniformscale_compose_after_translation_test ( ) : <EOL> t = Translation ( [ <NUM_LIT:3> , <NUM_LIT:4> ] ) <EOL> s = UniformScale ( <NUM_LIT:2> , <NUM_LIT:2> ) <EOL> res = s . compose_after ( t ) <EOL> assert ( type ( res ) == Similarity ) <EOL> def translation_compose_after_uniformscale_test ( ) : <EOL> t = Translation ( [ <NUM_LIT:3> , <NUM_LIT:4> ] ) <EOL> s = UniformScale ( <NUM_LIT:2> , <NUM_LIT:2> ) <EOL> res = t . compose_after ( s ) <EOL> assert ( type ( res ) == Similarity ) </s>
