public Transform Lerp(Transform other, float t)
{
if (this.Generality < other.Generality) {
return other.Lerp(this, -t); // TODO: is this correct?
}
AffineTransform ot = (other is AffineTransform) ?
(AffineTransform)other : new AffineTransform(other);
return new AffineTransform(
m00 + t*(ot.m00 - m00), m01 + t*(ot.m01 - m01),
m10 + t*(ot.m10 - m10), m11 + t*(ot.m11 - m11),
Tx + t*(ot.Tx - Tx ), Ty + t*(ot.Ty - Ty ));
}