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
The following commit(s) were added to refs/heads/geoapi-4.0 by this push: new 7574429b2d Fix documentation that became innacurate after the improvement done in previous commit. 7574429b2d is described below commit 7574429b2db1a3d7c7293b1db116e2c5091ebf21 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Sat Apr 27 11:23:27 2024 +0200 Fix documentation that became innacurate after the improvement done in previous commit. --- .../apache/sis/referencing/ClenshawSummation.java | 24 +++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/ClenshawSummation.java b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/ClenshawSummation.java index 96053fb6fa..2831ca0cd3 100644 --- a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/ClenshawSummation.java +++ b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/ClenshawSummation.java @@ -56,10 +56,16 @@ import org.apache.sis.pending.jdk.JDK21; * This class is used for more complex formulas where the use of spreadsheet become too difficult. * * <h2>Limitations</h2> - * Current implementation can handle a maximum of 6 terms in the trigonometric series (see {@link #compute()}). - * This limit is too short for {@link org.apache.sis.referencing.operation.projection.EquidistantCylindrical}. - * It would be possible to generalize using an iterative algorithm. Given that {@code EquidistantCylindrical} - * is used less often than Mercator or Lambert projections, we have not done this optimization yet. + * Current implementation can handle a maximum of 8 terms in the trigonometric series. + * This limit is hard-coded in the {@link #compute()} method, but can be expanded by using + * the {@link Precomputation} inner class for generating the {@code compute()} code. + * + * <h4>Possible future evolution</h4> + * Maybe we should generate series expansions automatically for a given precision and eccentricity, + * adding more terms until the last added term adds a correction smaller than the desired precision. + * Then we could use {@link Precomputation} for generating the corresponding Clenshaw summation. + * This improvement would be needed for planetary CRS, where map projections may be applied on planet + * with higher eccentricity than Earth. * * @author Martin Desruisseaux (Geomatys) * @@ -346,9 +352,13 @@ public final class ClenshawSummation { } /** - * Performs the Clenshaw summation. Current implementation uses hard-coded coefficients for 6 terms. - * See Charles F. F. Karney, Geodesics on an ellipsoid of revolution (2011) equation 59 - * if generalization to an arbitrary number of coefficients is desired. + * Performs the Clenshaw summation. Current implementation uses hard-coded coefficients for 8 terms. + * If more terms are needed, use {@link Precomputation} for generating the code of this method. + * + * <h4>Possible future evolution</h4> + * It would be possible to compute those terms dynamically using {@link Precomputation}. + * It would be useful if a future Apache SIS version generates series expansion on-the-fly + * for a specified precision and eccentricity. * * @see <a href="https://issues.apache.org/jira/browse/SIS-465">SIS-465</a> */