/**
*
*/
package mpicbg.trakem2.align;
import ini.trakem2.display.Patch;
import java.awt.geom.AffineTransform;
import mpicbg.models.RigidModel2D;
public class RigidTile2D extends AbstractAffineTile2D< mpicbg.models.RigidModel2D >
{
public RigidTile2D( final mpicbg.models.RigidModel2D model, final Patch patch )
{
super( model, patch );
}
public RigidTile2D( final Patch patch )
{
this( new RigidModel2D(), patch );
}
/**
* Initialize the model with the parameters of the {@link AffineTransform}
* of the {@link Patch}. The {@link AffineTransform} should be a
* Rigid Transformation, otherwise the results will not be what you might
* expect. This means, that:
* <ul>
* <li>{@link AffineTransform#getScaleX()} == {@link AffineTransform#getScaleY()}</li>
* <li>{@link AffineTransform#getShearX()} == -{@link AffineTransform#getShearY()}</li>
* <li>{@link AffineTransform#getScaleX()}<sup>2</sup> + {@link AffineTransform#getShearX()}<sup>2</sup> == 1</li>
* </ul>
*/
@Override
protected void initModel()
{
final AffineTransform a = patch.getAffineTransform();
model.set( ( float )a.getScaleX(), ( float )a.getShearY(), ( float )a.getTranslateX(), ( float )a.getTranslateY() );
}
}