This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-4.0 in repository https://gitbox.apache.org/repos/asf/sis.git
commit fe14e14c23e9d7e3083fc8c1d0d7c75f50c2f4b7 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Mon Jan 31 11:41:08 2022 +0100 Add a `DIMENSION` constant in `AbstractMathTransform2D` for code clarity. --- .../java/org/apache/sis/image/ResamplingGrid.java | 5 ---- .../operation/projection/NormalizedProjection.java | 9 ------- .../transform/AbstractMathTransform2D.java | 28 +++++++++++++++++----- .../transform/ConcatenatedTransform2D.java | 4 +++- .../transform/ConcatenatedTransformDirect2D.java | 4 +++- .../operation/transform/RotatedPole.java | 2 +- .../sis/referencing/operation/projection/NoOp.java | 3 ++- .../projection/ProjectionResultComparator.java | 4 ++-- 8 files changed, 33 insertions(+), 26 deletions(-) diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ResamplingGrid.java b/core/sis-feature/src/main/java/org/apache/sis/image/ResamplingGrid.java index b9ffba7..8390268 100644 --- a/core/sis-feature/src/main/java/org/apache/sis/image/ResamplingGrid.java +++ b/core/sis-feature/src/main/java/org/apache/sis/image/ResamplingGrid.java @@ -60,11 +60,6 @@ import static java.lang.Math.abs; */ final class ResamplingGrid extends AbstractMathTransform2D { /** - * Number of dimensions of the grid, which is {@value}. - */ - private static final int DIMENSION = 2; - - /** * The minimal tile width and height in pixels. If a tile width or height is less than this threshold, * then this class abandons the attempt to create a {@link ResamplingGrid} instance. */ diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java index 43c7066..73a6261 100644 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java @@ -142,15 +142,6 @@ public abstract class NormalizedProjection extends AbstractMathTransform2D imple private static final long serialVersionUID = -4010883312927645853L; /** - * Number of input and output dimensions of all {@code NormalizedProjection}. - * We define this constant for clarity only; its value shall not be modified. - * - * @see #getSourceDimensions() - * @see #getTargetDimensions() - */ - static final int DIMENSION = 2; - - /** * Maximum difference allowed when comparing longitudes or latitudes in radians. * The current value takes the system-wide angular tolerance value (equivalent to * about 1 cm on Earth) converted to radians. diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java index 2590c11..cea24d9 100644 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java @@ -58,31 +58,47 @@ import org.apache.sis.internal.referencing.j2d.ShapeUtilities; * running the same SIS version. * * @author Martin Desruisseaux (Geomatys) - * @version 0.5 + * @version 1.2 * @since 0.5 * @module */ public abstract class AbstractMathTransform2D extends AbstractMathTransform implements MathTransform2D { /** + * Number of input and output dimensions of all {@code AbstractMathTransform2D}, which is {@value}. + * We define this constant for clarity only; its value shall not be modified. + * + * <div class="note"><b>Purpose:</b> + * this is used for making clearer in the code when the literal 2 stands for the number of dimensions. + * It reduces confusion in contexts where the literal 2 also appear for other meanings than the number + * of dimensions.</div> + * + * @see #getSourceDimensions() + * @see #getTargetDimensions() + * + * @since 1.2 + */ + protected static final int DIMENSION = 2; + + /** * Constructor for subclasses. */ protected AbstractMathTransform2D() { } /** - * Returns the dimension of input points, which is always 2. + * Returns the dimension of input points, which is always {@value #DIMENSION}. */ @Override public final int getSourceDimensions() { - return 2; + return DIMENSION; } /** - * Returns the dimension of output points, which is always 2. + * Returns the dimension of output points, which is always {@value #DIMENSION}. */ @Override public final int getTargetDimensions() { - return 2; + return DIMENSION; } /** @@ -251,7 +267,7 @@ public abstract class AbstractMathTransform2D extends AbstractMathTransform impl * to the general path. Try to add them as a quadratic line, or as a straight line if * the computed control point is colinear with the starting and ending points. */ - mt.transform(buffer, 0, buffer, 0, 2); + mt.transform(buffer, 0, buffer, 0, DIMENSION); final Point2D ctrlPoint = ShapeUtilities.parabolicControlPoint(px, py, buffer[0], buffer[1], buffer[2], buffer[3], diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform2D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform2D.java index ffb64e4..61207e1 100644 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform2D.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform2D.java @@ -55,7 +55,9 @@ final class ConcatenatedTransform2D extends ConcatenatedTransform implements Mat */ @Override boolean isValid() { - return super.isValid() && (getSourceDimensions() == 2) && (getTargetDimensions() == 2); + return super.isValid() + && (getSourceDimensions() == AbstractMathTransform2D.DIMENSION) + && (getTargetDimensions() == AbstractMathTransform2D.DIMENSION); } /** diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransformDirect2D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransformDirect2D.java index 678fef6..a71febb 100644 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransformDirect2D.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransformDirect2D.java @@ -53,7 +53,9 @@ final class ConcatenatedTransformDirect2D extends ConcatenatedTransformDirect im */ @Override boolean isValid() { - return super.isValid() && (getSourceDimensions() == 2) && (getTargetDimensions() == 2); + return super.isValid() + && (getSourceDimensions() == AbstractMathTransform2D.DIMENSION) + && (getTargetDimensions() == AbstractMathTransform2D.DIMENSION); } /** diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/RotatedPole.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/RotatedPole.java index 1831e2d..41ae31d 100644 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/RotatedPole.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/RotatedPole.java @@ -179,7 +179,7 @@ public class RotatedPole extends AbstractMathTransform2D implements Serializable protected RotatedPole(final boolean south, final double φp, final double λp, final double pa) { context = new ContextualParameters( south ? RotatedSouthPole.PARAMETERS - : RotatedNorthPole.PARAMETERS, 2, 2); + : RotatedNorthPole.PARAMETERS, DIMENSION, DIMENSION); setValue(0, φp); // grid_south_pole_latitude or grid_north_pole_latitude setValue(1, λp); // grid_south_pole_longitude or grid_north_pole_longitude setValue(2, pa); // grid_south_pole_angle or north_pole_grid_longitude diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/NoOp.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/NoOp.java index 5b40427..978fe9e 100644 --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/NoOp.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/NoOp.java @@ -73,7 +73,8 @@ final strictfp class NoOp extends ConformalProjection { private NoOp(final Parameters parameters) { super(new Initializer(new DefaultOperationMethod( Collections.singletonMap(DefaultOperationMethod.NAME_KEY, parameters.getDescriptor().getName()), - 2, 2, parameters.getDescriptor()), parameters, Collections.emptyMap(), STANDARD_VARIANT)); + DIMENSION, DIMENSION, + parameters.getDescriptor()), parameters, Collections.emptyMap(), STANDARD_VARIANT)); } /** diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ProjectionResultComparator.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ProjectionResultComparator.java index 3ea1ca1..cfd7684 100644 --- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ProjectionResultComparator.java +++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ProjectionResultComparator.java @@ -139,7 +139,7 @@ final strictfp class ProjectionResultComparator extends NormalizedProjection { public Matrix transform(final double[] srcPts, final int srcOff, final double[] dstPts, final int dstOff, boolean derivate) throws ProjectionException { - final double[] point = Arrays.copyOfRange(srcPts, srcOff, srcOff + 2); + final double[] point = Arrays.copyOfRange(srcPts, srcOff, srcOff + DIMENSION); final Matrix derivative = tested.transform(srcPts, srcOff, dstPts, dstOff, derivate); final Matrix expected = reference.transform(point, 0, point, 0, derivate); if (dstPts != null) { @@ -163,7 +163,7 @@ final strictfp class ProjectionResultComparator extends NormalizedProjection { protected void inverseTransform(final double[] srcPts, final int srcOff, final double[] dstPts, final int dstOff) throws ProjectionException { - final double[] point = Arrays.copyOfRange(srcPts, srcOff, srcOff + 2); + final double[] point = Arrays.copyOfRange(srcPts, srcOff, srcOff + DIMENSION); tested.inverseTransform(srcPts, srcOff, dstPts, dstOff); reference.inverseTransform(point, 0, point, 0); assertEquals("φ", point[0], dstPts[dstOff ], INVERSE_TOLERANCE);