Author: desruisseaux
Date: Fri Jun 27 18:44:27 2014
New Revision: 1606180

URL: http://svn.apache.org/r1606180
Log:
Merge from the JDK8 branch.

Modified:
    sis/branches/JDK7/   (props changed)
    
sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java

Propchange: sis/branches/JDK7/
------------------------------------------------------------------------------
  Merged /sis/branches/JDK8:r1606174-1606178

Modified: 
sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java?rev=1606180&r1=1606179&r2=1606180&view=diff
==============================================================================
--- 
sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java
 [UTF-8] (original)
+++ 
sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java
 [UTF-8] Fri Jun 27 18:44:27 2014
@@ -380,6 +380,32 @@ public abstract class AbstractMathTransf
         }
 
         /**
+         * Gets the derivative of this transform at a point.
+         * The default implementation performs the following steps:
+         *
+         * <ul>
+         *   <li>Copy the coordinate in a temporary array and pass that array 
to the
+         *       {@link #transform(double[], int, double[], int, boolean)} 
method,
+         *       with the {@code derivate} boolean argument set to {@code 
true}.</li>
+         *   <li>If the later method returned a non-null matrix, returns that 
matrix.
+         *       Otherwise throws {@link TransformException}.</li>
+         * </ul>
+         *
+         * @param  point The coordinate point where to evaluate the derivative.
+         * @return The derivative at the specified point as a 2×2 matrix.
+         * @throws TransformException if the derivative can not be evaluated 
at the specified point.
+         */
+        @Override
+        public Matrix derivative(final Point2D point) throws 
TransformException {
+            final double[] coordinate = new double[] {point.getX(), 
point.getY()};
+            final Matrix derivative = transform(coordinate, 0, null, 0, true);
+            if (derivative == null) {
+                throw new 
TransformException(Errors.format(Errors.Keys.CanNotComputeDerivative));
+            }
+            return derivative;
+        }
+
+        /**
          * Same work than {@link AbstractMathTransform2D#beforeFormat(List, 
int, boolean)}
          * but with the knowledge that this transform is an inverse transform.
          */


Reply via email to