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);

Reply via email to