• ```public class AdvancedAffineBuilder
extends MathTransformBuilder```
Builder for affine transformation with possibility to set several constrains for affine parameters that will be respected during calculation. This is convenient for example to use when you want affine transformation with skew parameter equal to zero. Development carried out thanks to R&D grant DC08P02OUK006 - Old Maps Online (www.oldmapsonline.org) from Ministry of Culture of the Czech Republic
Author:
jezekjan
• ### Field Summary

Fields
Modifier and Type Field Description
`static String` `PHIX`
mark for key to specify phix - rotation constrain
`static String` `PHIY`
mark for key to specify phix - rotation constrain
`static String` `SX`
mark for key to specify sx - scale in x constrain
`static String` `SXY`
mark for key to specify sxy - skew constrain
`static String` `SY`
mark for key to specify sy - scale in y constrain
`static String` `TX`
mark for key to specify tx - translation in x constrain
`static String` `TY`
mark for key to specify ty - translation in y constrain
• ### Fields inherited from class MathTransformBuilder

`mtFactory`
• ### Constructor Summary

Constructors
Constructor Description
`AdvancedAffineBuilder​(List<MappedPosition> vectors)`
Constructs builder from set of GCPs
```AdvancedAffineBuilder​(List<MappedPosition> vectors, AffineTransform2D affineTrans)```
Constructs affine transform from GCPs and approximate values for calculation.
• ### Method Summary

All Methods
Modifier and Type Method Description
`void` `clearConstrains()`
Clears all constrains
`protected MathTransform` `computeMathTransform()`
Calculates the math transform immediately.
`protected GeneralMatrix` `getA()`
Generates A matrix (Matrix of derivation of affine equation).
`protected GeneralMatrix` `getB()`
Fill matrix of derivations of constrains by affine parameters.
`protected GeneralMatrix` `getL()`
Fill L matrix.
`double` `getMaxIterationDifference()`
Returns difference that is required between steps in iteration
`int` `getMinimumPointCount()`
Returns the minimum number of points required by this builder.
`int` `getNumberOfIterationSteps()`
Return max number of iteration steps.
`protected GeneralMatrix` `getProjectiveMatrix()`
Calculates coefficients of Projective transformation matrix from geometric parameters.
`protected GeneralMatrix` `getU()`
Fill matrix of constrain values (e.g. for constrain skew = 0 the value is 0)
`void` ```setConstrain​(String param, double value)```
Sets constrain that `param` is equal to `value`.
`void` `setMaxIterationDifference​(double dif)`
Sets difference that is required between steps in iteration.
`void` `setNumberOfIterationSteps​(int steps)`
Sets max number of iteration steps.
• ### Methods inherited from class MathTransformBuilder

`getCoordinateSystemType, getDimension, getErrorStatistics, getMappedPositions, getMathTransform, getName, getSourceCRS, getSourcePoints, getTargetCRS, getTargetPoints, getTransformation, printPoints, setMappedPositions, setSourcePoints, setTargetPoints, toString`
• ### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
• ### Field Detail

• #### SX

`public static final String SX`
mark for key to specify sx - scale in x constrain
Constant Field Values
• #### SY

`public static final String SY`
mark for key to specify sy - scale in y constrain
Constant Field Values
• #### SXY

`public static final String SXY`
mark for key to specify sxy - skew constrain
Constant Field Values
• #### PHIX

`public static final String PHIX`
mark for key to specify phix - rotation constrain
Constant Field Values
• #### PHIY

`public static final String PHIY`
mark for key to specify phix - rotation constrain
Constant Field Values
• #### TX

`public static final String TX`
mark for key to specify tx - translation in x constrain
Constant Field Values
• #### TY

`public static final String TY`
mark for key to specify ty - translation in y constrain
Constant Field Values
• ### Constructor Detail

```public AdvancedAffineBuilder​(List<MappedPosition> vectors)
throws IllegalArgumentException,
MismatchedDimensionException,
MismatchedReferenceSystemException,
FactoryException```
Constructs builder from set of GCPs
Parameters:
`vectors` - GCPs
Throws:
`IllegalArgumentException`
`MismatchedDimensionException`
`MismatchedReferenceSystemException`
`FactoryException`

```public AdvancedAffineBuilder​(List<MappedPosition> vectors,
AffineTransform2D affineTrans)
throws IllegalArgumentException,
MismatchedDimensionException,
MismatchedReferenceSystemException,
FactoryException```
Constructs affine transform from GCPs and approximate values for calculation. This constructor should be used when the default calculation is divergating.
Parameters:
`vectors` - GCPs
`affineTrans` - approximate affine transformation
Throws:
`IllegalArgumentException`
`MismatchedDimensionException`
`MismatchedReferenceSystemException`
`FactoryException`
• ### Method Detail

• #### setConstrain

```public void setConstrain​(String param,
double value)```
Sets constrain that `param` is equal to `value`. Be aware that the calculation may diverge in the case you set some values that are not 'close' to approximate values. I the case of divergence you can set approximate values using proper constructor
Parameters:
`param` - parameter name - set one of AdvancedAffineBuilder static variables.
`value` - required value
• #### clearConstrains

`public void clearConstrains()`
Clears all constrains
• #### getA

`protected GeneralMatrix getA()`
Generates A matrix (Matrix of derivation of affine equation). Each column is derivation by each transformation parameter (sx, sy, sxy, phi, tx,ty). The rows are derivations of fx and fy.
Returns:
A matrix
• #### getL

`protected GeneralMatrix getL()`
Fill L matrix. This matrix contains differences between expected value and value calculated from affine parameters
Returns:
l matrix
• #### getMinimumPointCount

`public int getMinimumPointCount()`
Description copied from class: `MathTransformBuilder`
Returns the minimum number of points required by this builder. This minimum depends on the algorithm used. For example affine transform builders require at least 3 points, while similar transform builders requires only 2 points.
Specified by:
`getMinimumPointCount` in class `MathTransformBuilder`
• #### getB

`protected GeneralMatrix getB()`
Fill matrix of derivations of constrains by affine parameters.
Returns:
B matrix
• #### getU

`protected GeneralMatrix getU()`
Fill matrix of constrain values (e.g. for constrain skew = 0 the value is 0)
Returns:
U matrix
• #### getProjectiveMatrix

```protected GeneralMatrix getProjectiveMatrix()
throws FactoryException```
Calculates coefficients of Projective transformation matrix from geometric parameters.
Returns:
Projective Matrix
Throws:
`FactoryException`
• #### computeMathTransform

```protected MathTransform computeMathTransform()
throws FactoryException```
Description copied from class: `MathTransformBuilder`
Calculates the math transform immediately.
Specified by:
`computeMathTransform` in class `MathTransformBuilder`
Returns:
Math transform from `MappedPosition`.
Throws:
`FactoryException` - if the math transform can't be created.
• #### getMaxIterationDifference

`public double getMaxIterationDifference()`
Returns difference that is required between steps in iteration
Returns:
max difference that is required for iteration steps
• #### setMaxIterationDifference

`public void setMaxIterationDifference​(double dif)`
Sets difference that is required between steps in iteration.
• #### getNumberOfIterationSteps

`public int getNumberOfIterationSteps()`
Return max number of iteration steps. If the difference between calculated values in each iteration steps is still bigger than required then Exception is thrown. This is not the number that was really needed for iteration.
Returns:
max number of iteration steps.
• #### setNumberOfIterationSteps

`public void setNumberOfIterationSteps​(int steps)`
Sets max number of iteration steps. If the difference between calculated values in each iteration steps is still bigger than required than Exception is thrown.
Parameters:
`steps` - max number of iterations.