37 typedef double value_type;
58 TiePoint(value_type a0, value_type a1, value_type b0, value_type b1);
68 static TiePoint makeTiePoint(value_type a0, value_type a1, value_type b0, value_type b1) {
return TiePoint(a0,a1,b0,b1); }
73 static this_type Identity();
78 ImplicitLinearTransform2d();
88 ImplicitLinearTransform2d(
const TiePoint& pt0,
96 bool operator==(
const this_type& other)
const;
102 bool operator!=(
const this_type& other)
const;
109 bool Compare(
const this_type& other,
const value_type& errtol = 0)
const;
116 this_type& Push(
const this_type& other);
123 this_type& Translate(value_type t0, value_type t1);
129 this_type& Rotate(value_type r);
136 this_type& Scale(value_type s0, value_type s1);
143 void Apply(value_type* b,
const value_type* a)
const;
144 void operator()(value_type* b,
const value_type* a)
const { Apply(b, a); }
148 value_type m_matrix[2][3];
155 ImplicitLinearTransform2d(
const this_type& tf1,
const this_type& tf2);