Builds {@linkplain org.opengis.referencing.operation.MathTransform MathTransform} setup as Similar transformation from a list of {@linkplain org.geotools.referencing.operation.builder.MappedPosition MappedPosition}. The The calculation uses least square method. The similar transform equation:
[ x'] [ a -b Tx ] [ x ] [ a*x - b*y + Tx ] [ y'] = [ b a Ty ] [ y ] = [ b*x + a*y + Ty ]
In the case that we have more identical points we can write it like this (in Matrix):
[ x'1 ] [ x1 -y1 1 0 ] [ a ] [ x'2 ] [ x2 -y2 1 0 ] [ b ] [ . ] [ . ] [ Tx ] [ . ] [ . ] * [ Ty ] [ x'n ] = [ xn yn 1 0 ] [ y'1 ] [ y1 x1 0 1 ] [ y'2 ] [ y2 x2 0 1 ] [ . ] [ . ] [ . ] [ . ] [ y'n ] [ yn xn 0 1 ] x' = A*m
Using the least square method we get this result:
m = (ATA)-1 ATx'
@since 2.4
@source $URL$
@version $Id$
@author Jan Jezek