public class

Transformation2D

extends Object
java.lang.Object
   ↳ com.esri.core.geometry.Transformation2D

Class Overview

The affine transformation class for 2D.
Vector is a row:
|m11 m12 0|
| x y 1| * |m21 m22 0| = |m11 * x + m21 * y + m31 m12 * x + m22 * y + m32 1|
|m31 m32 1|
Then elements of the Transformation2D are as follows:
|xx yx 0|
| x y 1| * |xy yy 0| = |xx * x + xy * y + xd yx * x + yy * y + yd 1|
|xd yd 1|
Matrices are used for transformations of the vectors as rows (case 2). That means the math expressions on the Geometry matrix operations should be writen like this:
v' = v * M1 * M2 * M3 = ( (v * M1) * M2 ) * M3, where v is a vector, Mn are the matrices.
This is equivalent to the following line of code:
ResultVector = (M1.mul(M2).mul(M3)).transform(Vector)

Summary

Fields
public double xd X translation component of the transformation.
public double xx Matrix coefficient XX of the transformation.
public double xy Matrix coefficient XY of the transformation.
public double yd Y translation component of the transformation.
public double yx Matrix coefficient YX of the transformation.
public double yy Matrix coefficient YY of the transformation.
Public Constructors
Transformation2D()
Creates a 2D affine transformation with identity transformation.
Transformation2D(double scale)
Creates a 2D affine transformation with a specified scale.
Public Methods
Transformation2D copy()
Returns a copy of the Transformation2D object.
boolean equals(Object other)
Returns True when all members of this transformation are equal to the corresponding members of the other.
void extractScaleTransform(Transformation2D scale, Transformation2D rotateNshearNshift)
Extracts scaling part of the transformation.
void flipX(double x0, double x1)
Flips the transformation around the X axis.
void flipY(double y0, double y1)
Flips the transformation around the Y axis.
void getCoefficients(double[] coefs)
Writes the matrix coefficients in the order XX, XY, XD, YX, YY, YD into the given array.
int hashCode()
Returns the hash code for the 2D transformation.
void inverse()
Inverses the matrix.
void inverse(Transformation2D inverse)
Produces inverse matrix for this matrix and puts result into the inverse parameter.
boolean isDegenerate(double tol)
Returns TRUE if this matrix is degenerated (does not have an inverse) within the given tolerance.
boolean isIdentity(double tol)
Returns TRUE if this matrix is an identity matrix within the given tolerance.
boolean isIdentity()
Returns TRUE if this matrix is the identity matrix.
boolean isOrthonormal(double tol)
Returns TRUE if this is an orthonormal transformation with the given tolerance.
boolean isReflective()
Returns TRUE for reflective transformations.
boolean isScaleAndShift(double tol)
Returns TRUE, if this transformation does not have rotation and shear within the given tolerance.
boolean isShift(double tol)
Returns TRUE if this transformation is a shift transformation within the given tolerance.
boolean isShift()
Returns TRUE if this transformation is a shift transformation.
boolean isUniform(double eps)
Returns TRUE if this transformation is a uniform transformation.
void mulLeft(Transformation2D left)
Multiplies this matrix on the left with the "left" matrix.
void multiply(Transformation2D right)
Multiplies this matrix on the right with the "right" matrix.
static void multiply(Transformation2D a, Transformation2D b, Transformation2D result)
Performs multiplication of matrices a and b and places the result into this matrix.
void rotate(double cos, double sin)
Rotates the transformation.
void rotate(double angle_in_Radians)
Rotates the transformation.
void rotate(double cos, double sin, Point rotationCenter)
Rotates the transformation around a center point.
void scale(double x, double y)
Scales the transformation.
void setFlipX(double x0, double x1)
Sets the transformation to be a flip around the X axis.
void setFlipY(double y0, double y1)
Sets the transformation to be a flip around the Y axis.
void setIdentity()
Sets this matrix to be the identity matrix.
void setRotate(double cosA, double sinA)
Sets rotation for this transformation.
void setRotate(double angle_in_Radians)
Sets this transformation to be a rotation around point (0, 0).
void setScale(double _scale)
Set transformation to be a uniform scale.
void setScale(double x, double y)
Set this transformation to be a scale.
void setShear(double proportionX, double proportionY)
Set transformation to a shear.
void setShift(double x, double y)
Set this transformation to be a shift.
void setZero()
Initializes a zero transformation.
void shear(double proportionX, double proportionY)
Shears the transformation.
void shift(double x, double y)
Shifts the transformation.
double transform(double tolerance)
Transforms a tolerance value.
void transform(double[] pointsXYInterleaved, int start, int count)
Transforms an array of points stored in an array of doubles as interleaved XY coordinates.
void transform(Point[] pointsIn, int count, Point[] pointsOut)
Transforms an array of points.
[Expand]
Inherited Methods
From class java.lang.Object

Fields

public double xd

X translation component of the transformation.

public double xx

Matrix coefficient XX of the transformation.

public double xy

Matrix coefficient XY of the transformation.

public double yd

Y translation component of the transformation.

public double yx

Matrix coefficient YX of the transformation.

public double yy

Matrix coefficient YY of the transformation.

Public Constructors

public Transformation2D ()

Creates a 2D affine transformation with identity transformation.

public Transformation2D (double scale)

Creates a 2D affine transformation with a specified scale.

Parameters
scale double: The scale to use for the transformation.

Public Methods

public Transformation2D copy ()

Returns a copy of the Transformation2D object.

Returns
Transformation2D A copy of this object.

public boolean equals (Object other)

Returns True when all members of this transformation are equal to the corresponding members of the other.

Parameters
other Object
Returns
boolean

public void extractScaleTransform (Transformation2D scale, Transformation2D rotateNshearNshift)

Extracts scaling part of the transformation. this == scale * rotateNshearNshift.

Parameters
scale Transformation2D: The destination matrix where the scale part is copied.
rotateNshearNshift Transformation2D: The destination matrix where the part excluding rotation is copied.

public void flipX (double x0, double x1)

Flips the transformation around the X axis.

Parameters
x0 double: The X coordinate to flip.
x1 double: The X coordinate to flip to.

public void flipY (double y0, double y1)

Flips the transformation around the Y axis.

Parameters
y0 double: The Y coordinate to flip.
y1 double: The Y coordinate to flip to.

public void getCoefficients (double[] coefs)

Writes the matrix coefficients in the order XX, XY, XD, YX, YY, YD into the given array.

Parameters
coefs double: The array into which the coefficients are returned. Should be of size 6 elements.

public int hashCode ()

Returns the hash code for the 2D transformation.

Returns
int

public void inverse ()

Inverses the matrix.

public void inverse (Transformation2D inverse)

Produces inverse matrix for this matrix and puts result into the inverse parameter.

Parameters
inverse Transformation2D: The result inverse matrix.

public boolean isDegenerate (double tol)

Returns TRUE if this matrix is degenerated (does not have an inverse) within the given tolerance.

Parameters
tol double: The tolerance value.
Returns
boolean

public boolean isIdentity (double tol)

Returns TRUE if this matrix is an identity matrix within the given tolerance.

Parameters
tol double: The tolerance value.
Returns
boolean

public boolean isIdentity ()

Returns TRUE if this matrix is the identity matrix.

Returns
boolean

public boolean isOrthonormal (double tol)

Returns TRUE if this is an orthonormal transformation with the given tolerance. The orthonormal: Rotation or rotoinversion and shift (preserves lengths of vectors and angles between vectors).

Parameters
tol double: The tolerance value.
Returns
boolean

public boolean isReflective ()

Returns TRUE for reflective transformations. It inverts the sign of vector cross product.

Returns
boolean

public boolean isScaleAndShift (double tol)

Returns TRUE, if this transformation does not have rotation and shear within the given tolerance.

Parameters
tol double: The tolerance value.
Returns
boolean

public boolean isShift (double tol)

Returns TRUE if this transformation is a shift transformation within the given tolerance.

Parameters
tol double: The tolerance value.
Returns
boolean

public boolean isShift ()

Returns TRUE if this transformation is a shift transformation. The shift transformation performs shift only.

Returns
boolean

public boolean isUniform (double eps)

Returns TRUE if this transformation is a uniform transformation. The uniform transformation is a transformation, which transforms a square to a square.

Parameters
eps double
Returns
boolean

public void mulLeft (Transformation2D left)

Multiplies this matrix on the left with the "left" matrix. Stores the result into this matrix and returns a reference to it.
Equivalent to this = left * this.

Parameters
left Transformation2D: The matrix to be multiplied with.

public void multiply (Transformation2D right)

Multiplies this matrix on the right with the "right" matrix. Stores the result into this matrix and returns a reference to it.
Equivalent to this *= right.

Parameters
right Transformation2D: The matrix to be multiplied with.

public static void multiply (Transformation2D a, Transformation2D b, Transformation2D result)

Performs multiplication of matrices a and b and places the result into this matrix. The a, b, and result could point to same objects.
Equivalent to result = a * b.

Parameters
a Transformation2D: The 2D transformation to be multiplied.
b Transformation2D: The 2D transformation to be multiplied.
result Transformation2D: The 2D transformation created by multiplication of matrices.

public void rotate (double cos, double sin)

Rotates the transformation.

Parameters
cos double: The cos angle of the rotation.
sin double: The sin angle of the rotation.

public void rotate (double angle_in_Radians)

Rotates the transformation.

Parameters
angle_in_Radians double: The rotation angle in radian.

public void rotate (double cos, double sin, Point rotationCenter)

Rotates the transformation around a center point.

Parameters
cos double: The cos of the angle of rotation.
sin double: sin of the angle of rotation.
rotationCenter Point: The center point of the rotation.

public void scale (double x, double y)

Scales the transformation.

Parameters
x double: The scale factor in X direction.
y double: The scale factor in Y direction.

public void setFlipX (double x0, double x1)

Sets the transformation to be a flip around the X axis. Flips the X coordinates so that the x0 becomes x1 and vice verse.

Parameters
x0 double: The X coordinate to flip.
x1 double: The X coordinate to flip to.

public void setFlipY (double y0, double y1)

Sets the transformation to be a flip around the Y axis. Flips the Y coordinates so that the y0 becomes y1 and vice verse.

Parameters
y0 double: The Y coordinate to flip.
y1 double: The Y coordinate to flip to.

public void setIdentity ()

Sets this matrix to be the identity matrix.

public void setRotate (double cosA, double sinA)

Sets rotation for this transformation. When the axis Y is directed up and X is directed to the right, the positive angle corresponds to the anti-clockwise rotation. When the axis Y is directed down and X is directed to the right, the positive angle corresponds to the clockwise rotation.

Parameters
cosA double: The rotation angle.
sinA double: The rotation angle.

public void setRotate (double angle_in_Radians)

Sets this transformation to be a rotation around point (0, 0). When the axis Y is directed up and X is directed to the right, the positive angle corresponds to the anti-clockwise rotation. When the axis Y is directed down and X is directed to the right, the positive angle corresponds to the clockwise rotation.

Parameters
angle_in_Radians double: The rotation angle in radian.

public void setScale (double _scale)

Set transformation to be a uniform scale.

Parameters
_scale double: The scale of the transformation.

public void setScale (double x, double y)

Set this transformation to be a scale.

Parameters
x double: The X coordinate to scale to.
y double: The Y coordinate to scale to.

public void setShear (double proportionX, double proportionY)

Set transformation to a shear.

Parameters
proportionX double: The proportion of shearing in x direction.
proportionY double: The proportion of shearing in y direction.

public void setShift (double x, double y)

Set this transformation to be a shift.

Parameters
x double: The X coordinate to shift to.
y double: The Y coordinate to shift to.

public void setZero ()

Initializes a zero transformation. Transforms any coordinate to (0, 0).

public void shear (double proportionX, double proportionY)

Shears the transformation.

Parameters
proportionX double: The proportion of shearing in x direction.
proportionY double: The proportion of shearing in y direction.

public void shift (double x, double y)

Shifts the transformation.

Parameters
x double: The shift factor in X direction.
y double: The shift factor in Y direction.

public double transform (double tolerance)

Transforms a tolerance value.

Parameters
tolerance double: The tolerance value.
Returns
double

public void transform (double[] pointsXYInterleaved, int start, int count)

Transforms an array of points stored in an array of doubles as interleaved XY coordinates.

Parameters
pointsXYInterleaved double: The array of points with interleaved X, Y values to be transformed.
start int: The start point index to transform from (the actual element index is 2 * start).
count int: The number of points to transform (the actual element count is 2 * count).

public void transform (Point[] pointsIn, int count, Point[] pointsOut)

Transforms an array of points.

Parameters
pointsIn Point: The points to be transformed.
count int: The number of points to transform.
pointsOut Point: The transformed points are returned using this array. It should have the same or greater size as the input array.