/** Applies {@code normalizedToProjection} first, then {@link #projectedScale}. */ private XMatrix applyProjectedScale(final XMatrix normalizedToProjection) { if (projectedScale == null) { return normalizedToProjection; } final XMatrix scale = MatrixFactory.create(projectedScale); scale.multiply(normalizedToProjection); return scale; }
@Override public void invert(Matrix matrix) throws SingularMatrixException { Matrix2 k = internal(matrix); final double det = k.m00 * k.m11 - k.m01 * k.m10; if (det == 0) { throw new SingularMatrixException("Determinate is zero, cannot invert matrix"); } m00 = k.m11 / det; m11 = k.m00 / det; m10 = -k.m10 / det; m01 = -k.m01 / det; }
/** Returns a clone of this matrix. */ @Override public GeneralMatrix clone() { return new GeneralMatrix(this); }
/** * Wraps the specified matrix in a Geotools implementation of {@link Matrix}. If {@code matrix} * is already an instance of {@code XMatrix}, then it is returned unchanged. Otherwise, all * elements are copied in a new {@code XMatrix} object. */ static XMatrix toXMatrix(final Matrix matrix) { if (matrix instanceof XMatrix) { return (XMatrix) matrix; } return MatrixFactory.create(matrix); }
/** * {@inheritDoc} * * @since 2.3.1 */ public final boolean isIdentity(double tolerance) { return GeneralMatrix.isIdentity(this, tolerance); }
/** {@inheritDoc} */ public final void setIdentity() { m01 = m10 = 0; m00 = m11 = 1; assert isIdentity(); }
@Override public void add(XMatrix matrix) { final Matrix2 k = internal(matrix); m00 += k.m00; m01 += k.m01; m10 += k.m10; m11 += k.m11; }
/** * Returns a string representation of this matrix. The returned string is implementation * dependent. It is usually provided for debugging purposes only. */ @Override public String toString() { return GeneralMatrix.toString(this); }
/** Inverts this matrix in place. */ public final void invert() { final double det = m00 * m11 - m01 * m10; if (det == 0) { throw new SingularMatrixException("Determinate is zero, cannot invert matrix"); } final double swap = m00; m00 = m11 / det; m11 = swap / det; m10 = -m10 / det; m01 = -m01 / det; }
/** Returns a clone of this matrix. */ @Override public Matrix4 clone() { return new Matrix4(this); } }
.createAffineTransform(new GeneralMatrix(3, 3, matrix)); coverage.setGrid(new GridGeometry2D(range, gridToCRS, crs)); } else {
/** * Gets the derivative of this transform at a point. For an identity transform, the derivative * is the same everywhere. */ @Override public Matrix derivative(final DirectPosition point) { return MatrixFactory.create(dimension); }
/** * Returns a string representation of this matrix. The returned string is implementation * dependent. It is usually provided for debugging purposes only. */ @Override public String toString() { return GeneralMatrix.toString(this); }
@Override public void sub(Matrix matrix) { final Matrix2 k = internal(matrix); m00 -= k.m00; m01 -= k.m01; m10 -= k.m10; m11 -= k.m11; }
/** * Returns a string representation of this matrix. The returned string is implementation * dependent. It is usually provided for debugging purposes only. */ @Override public String toString() { return GeneralMatrix.toString(this); }
@Override public void add(double scalar, XMatrix matrix) { final Matrix2 k = internal(matrix); m00 = scalar + k.m00; m01 = scalar + k.m01; m10 = scalar + k.m10; m11 = scalar + k.m11; }
@Override public void sub(double scalar, Matrix matrix) { final Matrix2 k = internal(matrix); m00 = scalar - k.m00; m01 = scalar - k.m01; m10 = scalar - k.m10; m11 = scalar - k.m11; }
@Override public void negate(Matrix matrix) { Matrix2 k = internal(matrix); m00 = -k.m00; m01 = -k.m01; m10 = -k.m10; m11 = -k.m11; }
@Override public void mul(double scalar, Matrix matrix) { final Matrix2 k = internal(matrix); m00 = scalar * k.m00; m01 = scalar * k.m01; m10 = scalar * k.m10; m11 = scalar * k.m11; }