sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1654231 - in /sis/branches/JDK8: core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/ core/sis-referencing/src/test/java/org/apache...
Date Fri, 23 Jan 2015 15:08:27 GMT
Author: desruisseaux
Date: Fri Jan 23 15:08:27 2015
New Revision: 1654231

URL: http://svn.apache.org/r1654231
Log:
Clarifications in Javadoc, and added a check against values very close to zero in Plane.

Modified:
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
    sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
    sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilderTest.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/CompoundDirectPositions.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/Plane.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/package-info.java
    sis/branches/JDK8/src/main/javadoc/stylesheet.css

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java?rev=1654231&r1=1654230&r2=1654231&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
[UTF-8] Fri Jan 23 15:08:27 2015
@@ -30,7 +30,8 @@ import org.apache.sis.util.resources.Err
 /**
  * Creates a linear (usually affine) transform which will map approximatively the given source
points to
  * the given target points. The transform coefficients are determined using a <cite>least
squares</cite>
- * estimation method.
+ * estimation method, with the assumption that source points are precise and all uncertainty
is in the
+ * target points.
  *
  * <div class="note"><b>Implementation note:</b>
  * The quantity that current implementation tries to minimize is not strictly the squared
Euclidian distance.
@@ -98,7 +99,7 @@ public class LinearTransformBuilder {
      * <p><b>Limitation:</b> in current implementation, the source points
must be two-dimensional.
      * But this restriction may be removed in a future SIS version.</p>
      *
-     * @param  points The source points.
+     * @param  points The source points, assumed precise.
      * @throws MismatchedDimensionException if at least one point does not have the expected
number of dimensions.
      */
     public void setSourcePoints(final DirectPosition... points) throws MismatchedDimensionException
{
@@ -112,7 +113,7 @@ public class LinearTransformBuilder {
      * Target points can have any number of dimensions (not necessarily 2), but all points
shall have
      * the same number of dimensions.
      *
-     * @param  points The target points.
+     * @param  points The target points, assumed uncertain.
      * @throws MismatchedDimensionException if not all points have the same number of dimensions.
      */
     public void setTargetPoints(final DirectPosition... points) throws MismatchedDimensionException
{
@@ -126,7 +127,8 @@ public class LinearTransformBuilder {
     }
 
     /**
-     * Creates a linear transform from the source and target points.
+     * Creates a linear transform approximation from the source points to the target points.
+     * This method assumes that source points are precise and all uncertainty is in the target
points.
      *
      * @return The fitted linear transform.
      */

Modified: sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java?rev=1654231&r1=1654230&r2=1654231&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
[UTF-8] Fri Jan 23 15:08:27 2015
@@ -61,6 +61,10 @@ class GeneralMatrix extends MatrixSIS im
      * rounding errors anyway. So we put the threshold to some arbitrary mid-value, which
may change in any future
      * SIS version according experience gained. As long as the value is smaller than 1, it
still more accurate than
      * {@code double} arithmetic anyway.</p>
+     *
+     * <div class="note"><b>Note:</b>
+     * A similar constant exists in {@code org.apache.sis.math.Plane}.
+     * </div>
      */
     private static final double ZERO_THRESHOLD = 1E-14;
 

Modified: sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilderTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilderTest.java?rev=1654231&r1=1654230&r2=1654231&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilderTest.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilderTest.java
[UTF-8] Fri Jan 23 15:08:27 2015
@@ -51,7 +51,7 @@ public final strictfp class LinearTransf
 
         // First row (x)
         assertEquals( 2, m.getElement(0, 0), 0);
-        assertEquals( 0, m.getElement(0, 1), 1E-20);
+        assertEquals( 0, m.getElement(0, 1), 0);
         assertEquals( 1, m.getElement(0, 2), 0);
 
         // Second row (y)

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/CompoundDirectPositions.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/CompoundDirectPositions.java?rev=1654231&r1=1654230&r2=1654231&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/CompoundDirectPositions.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/CompoundDirectPositions.java
[UTF-8] Fri Jan 23 15:08:27 2015
@@ -114,7 +114,7 @@ final class CompoundDirectPositions impl
      * @return Always {@code null}.
      */
     @Override
-    public final CoordinateReferenceSystem getCoordinateReferenceSystem() {
+    public CoordinateReferenceSystem getCoordinateReferenceSystem() {
         return null;
     }
 
@@ -122,7 +122,7 @@ final class CompoundDirectPositions impl
      * Returns the number of dimensions.
      */
     @Override
-    public final int getDimension() {
+    public int getDimension() {
         return ordinates.length;
     }
 
@@ -138,7 +138,7 @@ final class CompoundDirectPositions impl
      * Not needed.
      */
     @Override
-    public final double[] getCoordinate() {
+    public double[] getCoordinate() {
         throw new UnsupportedOperationException();
     }
 

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/Plane.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/Plane.java?rev=1654231&r1=1654230&r2=1654231&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/Plane.java [UTF-8]
(original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/Plane.java [UTF-8]
Fri Jan 23 15:08:27 2015
@@ -16,7 +16,6 @@
  */
 package org.apache.sis.math;
 
-import java.util.Arrays;
 import java.io.Serializable;
 import org.opengis.geometry.DirectPosition;
 import org.opengis.geometry.MismatchedDimensionException;
@@ -30,7 +29,8 @@ import org.apache.sis.util.resources.Err
  * The plane equation is expressed by {@link #c}, {@link #cx} and {@link #cy} coefficients
as below:
  *
  * <blockquote>
- *   <var>z</var>(<var>x</var>,<var>y</var>) = <var>c</var>
+ <var>cx</var>⋅<var>x</var> + <var>cy</var>⋅<var>y</var>
+ *   <var>{@linkplain #z(double, double) z}</var>(<var>x</var>,<var>y</var>)
=
+ *   <var>c</var> + <var>cx</var>⋅<var>x</var> + <var>cy</var>⋅<var>y</var>
  * </blockquote>
  *
  * Those coefficients can be set directly, or computed by a linear regression of this plane
@@ -49,41 +49,61 @@ public class Plane implements Cloneable,
     private static final long serialVersionUID = 2956201711131316723L;
 
     /**
+     * Threshold value relative to 1 ULP of other terms in the  z = c + cx⋅x + cy⋅y 
equation.
+     * A value of 1 would be theoretically sufficient since adding a value smaller to 1 ULP
to
+     * a {@code double} has no effect. Nevertheless we use a smaller value as a safety because:
+     *
+     * <ul>
+     *   <li>We perform our checks using the points given by the user, but we don't
know how
+     *       representative those points are.</li>
+     *   <li>We perform our checks using an approximation which may result in slightly
different
+     *       decisions (false positives) than what we would got by a more robust check.</li>
+     * </ul>
+     *
+     * This arbitrary threshold value may change in any future SIS version according experience
gained.
+     *
+     * <div class="note"><b>Note:</b>
+     * A similar constant exists in {@code org.apache.sis.referencing.operation.matrix.GeneralMatrix}.
+     * </div>
+     */
+    private static final double ZERO_THRESHOLD = 1E-14;
+
+    /**
      * The <var>c</var> coefficient for this plane. This coefficient appears
in the plane equation
-     * <var><strong>c</strong></var>+<var>cx</var>⋅<var>x</var>+<var>cy</var>⋅<var>y</var>.
+     * <var><b><u>c</u></b></var> + <var>cx</var>⋅<var>x</var>
+ <var>cy</var>⋅<var>y</var>.
      */
     public double c;
 
     /**
      * The <var>cx</var> coefficient for this plane. This coefficient appears
in the plane equation
-     * <var>c</var>+<var><strong>cx</strong></var>⋅<var>x</var>+<var>cy</var>⋅<var>y</var>.
+     * <var>c</var> + <var><b><u>cx</u></b></var>⋅<var>x</var>
+ <var>cy</var>⋅<var>y</var>.
      */
     public double cx;
 
     /**
      * The <var>cy</var> coefficient for this plane. This coefficient appears
in the place equation
-     * <var>c</var>+<var>cx</var>⋅<var>x</var>+<var><strong>cy</strong></var>⋅<var>y</var>.
+     * <var>c</var> + <var>cx</var>⋅<var>x</var> +
<var><b><u>cy</u></b></var>⋅<var>y</var>.
      */
     public double cy;
 
     /**
-     * Construct a new plane. All coefficients are set to 0.
+     * Constructs a new plane with all coefficients set to 0.
      */
     public Plane() {
     }
 
     /**
-     * Computes the <var>z</var> value for the specified (<var>x</var>,<var>y</var>)
point.
-     * The <var>z</var> value is computed using the following equation:
+     * Computes the <var>x</var> value for the specified (<var>y</var>,<var>z</var>)
point.
+     * The <var>x</var> value is computed using the following equation:
      *
-     * <blockquote>z(x,y) = {@linkplain #c} + {@linkplain #cx}⋅x + {@linkplain #cy}⋅y</blockquote>
+     * <blockquote>x(y,z) = (z - ({@linkplain #c} + {@linkplain #cy}⋅y)) / {@linkplain
#cx}</blockquote>
      *
-     * @param x The <var>x</var> value.
-     * @param y The <var>y</var> value.
-     * @return  The <var>z</var> value.
+     * @param y The <var>x</var> value.
+     * @param z The <var>y</var> value.
+     * @return  The <var>x</var> value.
      */
-    public final double z(final double x, final double y) {
-        return c + cx*x + cy*y;
+    public final double x(final double y, final double z) {
+        return (z - (c + cy*y)) / cx;
     }
 
     /**
@@ -101,25 +121,27 @@ public class Plane implements Cloneable,
     }
 
     /**
-     * Computes the <var>x</var> value for the specified (<var>y</var>,<var>z</var>)
point.
-     * The <var>x</var> value is computed using the following equation:
+     * Computes the <var>z</var> value for the specified (<var>x</var>,<var>y</var>)
point.
+     * The <var>z</var> value is computed using the following equation:
      *
-     * <blockquote>x(y,z) = (z - ({@linkplain #c} + {@linkplain #cy}⋅y)) / {@linkplain
#cx}</blockquote>
+     * <blockquote>z(x,y) = {@linkplain #c} + {@linkplain #cx}⋅x + {@linkplain #cy}⋅y</blockquote>
      *
-     * @param y The <var>x</var> value.
-     * @param z The <var>y</var> value.
-     * @return  The <var>x</var> value.
+     * @param x The <var>x</var> value.
+     * @param y The <var>y</var> value.
+     * @return  The <var>z</var> value.
      */
-    public final double x(final double y, final double z) {
-        return (z - (c + cy*y)) / cx;
+    public final double z(final double x, final double y) {
+        return c + cx*x + cy*y;
     }
 
     /**
      * Computes the plane's coefficients from the given ordinate values.
-     * This method uses a linear regression in the least-square sense.
-     * {@link Double#NaN} values are ignored.
+     * This method uses a linear regression in the least-square sense,
+     * with the assumption that the (<var>x</var>,<var>y</var>) values
are precise
+     * and all uncertainty is in <var>z</var>.
      *
-     * <p>The result is undetermined if all points are colinear.</p>
+     * <p>{@link Double#NaN} values are ignored.
+     * The result is undetermined if all points are colinear.</p>
      *
      * @param  x vector of <var>x</var> coordinates.
      * @param  y vector of <var>y</var> coordinates.
@@ -128,31 +150,37 @@ public class Plane implements Cloneable,
      * @throws IllegalArgumentException if <var>x</var>, <var>y</var>
and <var>z</var> do not have the same length.
      */
     public double fit(final double[] x, final double[] y, final double[] z) {
-        return fit(new CompoundDirectPositions(x, y, z));
+        // Do not invoke an overrideable method with our tricky iterable.
+        return fit(new CompoundDirectPositions(x, y, z), true, true, true);
     }
 
     /**
      * Computes the plane's coefficients from the given sequence of points.
-     * This method uses a linear regression in the least-square sense.
-     * Points shall be three dimensional with ordinate values in the (<var>x</var>,<var>y</var>,<var>z</var>)
order.
-     * {@link Double#NaN} ordinate values are ignored.
+     * This method uses a linear regression in the least-square sense,
+     * with the assumption that the (<var>x</var>,<var>y</var>) values
are precise
+     * and all uncertainty is in <var>z</var>.
      *
-     * <p>The result is undetermined if all points are colinear.</p>
+     * <p>Points shall be three dimensional with ordinate values in the (<var>x</var>,<var>y</var>,<var>z</var>)
order.
+     * {@link Double#NaN} ordinate values are ignored.
+     * The result is undetermined if all points are colinear.</p>
      *
      * @param  points The three dimensional points.
      * @return An estimation of the Pearson correlation coefficient.
      * @throws MismatchedDimensionException if a point is not three-dimensional.
      */
-    public double fit(final DirectPosition... points) throws MismatchedDimensionException
{
-        return fit(Arrays.asList(points));
+    public double fit(final Iterable<? extends DirectPosition> points) {
+        return fit(points, true, true, true);
     }
 
     /**
      * Implementation of public {@code fit(…)} methods.
      * This method needs to iterate over the points two times:
      * one for computing the coefficients, and one for the computing the Pearson coefficient.
+     * The second pass can also opportunistically checks if some small coefficients can be
replaced by zero.
      */
-    private double fit(final Iterable<? extends DirectPosition> points) {
+    private double fit(final Iterable<? extends DirectPosition> points,
+            boolean detectZeroC, boolean detectZeroCx, boolean detectZeroCy)
+    {
         int i = 0, n = 0;
         final DoubleDouble sum_x  = new DoubleDouble();
         final DoubleDouble sum_y  = new DoubleDouble();
@@ -174,17 +202,17 @@ public class Plane implements Cloneable,
                         Errors.Keys.MismatchedDimension_3, "positions[" + i + ']', 3, dimension));
             }
             i++;
-            final double xi = p.getOrdinate(0); if (Double.isNaN(xi)) continue;
-            final double yi = p.getOrdinate(1); if (Double.isNaN(yi)) continue;
-            final double zi = p.getOrdinate(2); if (Double.isNaN(zi)) continue;
-            xx.setToProduct(xi, xi);
-            yy.setToProduct(yi, yi);
-            xy.setToProduct(xi, yi);
-            zx.setToProduct(zi, xi);
-            zy.setToProduct(zi, yi);
-            sum_x.add(xi);
-            sum_y.add(yi);
-            sum_z.add(zi);
+            final double x = p.getOrdinate(0); if (Double.isNaN(x)) continue;
+            final double y = p.getOrdinate(1); if (Double.isNaN(y)) continue;
+            final double z = p.getOrdinate(2); if (Double.isNaN(z)) continue;
+            xx.setToProduct(x, x);
+            yy.setToProduct(y, y);
+            xy.setToProduct(x, y);
+            zx.setToProduct(z, x);
+            zy.setToProduct(z, y);
+            sum_x.add(x);
+            sum_y.add(y);
+            sum_z.add(z);
             sum_xx.add(xx);
             sum_yy.add(yy);
             sum_xy.add(xy);
@@ -239,51 +267,53 @@ public class Plane implements Cloneable,
         final double mean_x = sum_x.value / n;
         final double mean_y = sum_y.value / n;
         final double mean_z = sum_z.value / n;
-        double sx=0, sy=0, pe=0;
+        final double offset = (this.cx * mean_x + this.cy * mean_y) + this.c; // Offsetted
c - see comment before usage.
+        double sum_ds2 = 0, sum_dz2 = 0, sum_dsz = 0;
         for (final DirectPosition p : points) {
-            final double xi = p.getOrdinate(2) - mean_z;
-            if (!Double.isNaN(xi)) {
-                final double yi = cx.value * (p.getOrdinate(0) - mean_x)
-                                + cy.value * (p.getOrdinate(1) - mean_y);
-                if (!Double.isNaN(yi)) {
-                    sx += xi * xi;
-                    sy += yi * yi;
-                    pe += xi * yi;
-                }
+            final double x = (p.getOrdinate(0) - mean_x) * cx.value;
+            final double y = (p.getOrdinate(1) - mean_y) * cy.value;
+            final double z = (p.getOrdinate(2) - mean_z);
+            final double s = x + y;
+            if (!Double.isNaN(s) && !Double.isNaN(z)) {
+                sum_ds2 += s * s;
+                sum_dz2 += z * z;
+                sum_dsz += s * z;
             }
+            /*
+             * Algorithm for detecting if a coefficient should be zero:
+             * If for every points given by the user, adding (cx⋅x) in (c + cx⋅x + cy⋅y)
does not make any difference
+             * because (cx⋅x) is smaller than 1 ULP of (c + cy⋅y), then it is not worth
adding it and  cx  can be set
+             * to zero. The same rational applies to (cy⋅y) and c.
+             *
+             * Since we work with differences from the means, the  z = c + cx⋅x + cy⋅y
 equation can be rewritten as:
+             *
+             *     Δz = cx⋅Δx + cy⋅Δy + (cx⋅mx + cy⋅my + c - mz)    where the
term between (…) is close to zero.
+             *
+             * The check for (cx⋅Δx) and (cy⋅Δy) below ignore the (…) term since
it is close to zero.
+             * The check for  c  is derived from an equation without the  -mz  term.
+             */
+            if (detectZeroC  && offset      >= Math.ulp(s * ZERO_THRESHOLD)) detectZeroC
 = false;
+            if (detectZeroCx && Math.abs(x) >= Math.ulp(y * ZERO_THRESHOLD)) detectZeroCx
= false;
+            if (detectZeroCy && Math.abs(y) >= Math.ulp(x * ZERO_THRESHOLD)) detectZeroCy
= false;
         }
-        return pe / Math.sqrt(sx * sy);
+        if (detectZeroC)  this.c  = 0;
+        if (detectZeroCx) this.cx = 0;
+        if (detectZeroCy) this.cy = 0;
+        return sum_dsz / Math.sqrt(sum_ds2 * sum_dz2);
     }
 
     /**
-     * Returns a string representation of this plane.
-     * The string will contains the plane's equation, as below:
+     * Returns a clone of this plane.
      *
-     * <blockquote>
-     *     <var>z</var>(<var>x</var>,<var>y</var>) =
{@link #c} +
-     *     {@link #cx}⋅<var>x</var> + {@link #cy}⋅<var>y</var>
-     * </blockquote>
+     * @return A clone of this plane.
      */
     @Override
-    public String toString() {
-        final StringBuilder buffer = new StringBuilder("z(x,y)= ");
-        if (c == 0 && cx == 0 && cy == 0) {
-            buffer.append(0);
-        } else {
-            if (c != 0) {
-                buffer.append(c).append(" + ");
-            }
-            if (cx != 0) {
-                buffer.append(cx).append("⋅x");
-                if (cy != 0) {
-                    buffer.append(" + ");
-                }
-            }
-            if (cy != 0) {
-                buffer.append(cy).append("⋅y");
-            }
+    public Plane clone() {
+        try {
+            return (Plane) super.clone();
+        } catch (CloneNotSupportedException exception) {
+            throw new AssertionError(exception);
         }
-        return buffer.toString();
     }
 
     /**
@@ -316,16 +346,33 @@ public class Plane implements Cloneable,
     }
 
     /**
-     * Returns a clone of this plane.
+     * Returns a string representation of this plane.
+     * The string will contains the plane's equation, as below:
      *
-     * @return A clone of this plane.
+     * <blockquote>
+     *     <var>z</var>(<var>x</var>,<var>y</var>) =
{@link #c} +
+     *     {@link #cx}⋅<var>x</var> + {@link #cy}⋅<var>y</var>
+     * </blockquote>
      */
     @Override
-    public Plane clone() {
-        try {
-            return (Plane) super.clone();
-        } catch (CloneNotSupportedException exception) {
-            throw new AssertionError(exception);
+    public String toString() {
+        final StringBuilder buffer = new StringBuilder("z(x,y) = ");
+        if (c == 0 && cx == 0 && cy == 0) {
+            buffer.append('0');
+        } else {
+            if (c != 0) {
+                buffer.append(c).append(" + ");
+            }
+            if (cx != 0) {
+                buffer.append(cx).append("⋅x");
+                if (cy != 0) {
+                    buffer.append(" + ");
+                }
+            }
+            if (cy != 0) {
+                buffer.append(cy).append("⋅y");
+            }
         }
+        return buffer.toString();
     }
 }

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/package-info.java?rev=1654231&r1=1654230&r2=1654231&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/package-info.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/math/package-info.java
[UTF-8] Fri Jan 23 15:08:27 2015
@@ -17,10 +17,24 @@
 
 /**
  * A set of mathematical objects and algebraic utilities.
+ * This package provides:
+ *
+ * <ul>
+ *   <li>Static functions in {@link org.apache.sis.math.MathFunctions} and {@link org.apache.sis.math.DecimalFunctions}.</li>
+ *   <li>{@link org.apache.sis.math.Statistics} accumulator, optionally with statistics
on derivatives
+ *       and {@linkplain org.apache.sis.math.StatisticsFormat tabular formatting}.</li>
+ *   <li>Simple equations for {@link org.apache.sis.math.Line} and {@link org.apache.sis.math.Plane}
+ *       with capability to determine the coefficients from a set of coordinates.</li>
+ * </ul>
+ *
+ * <div class="note"><b>Note:</b>
+ * {@code Line} and {@code Plane} classes are not geometric objects since they are not bounded
in space.
+ * For example the {@link java.awt.geom.Line2D} geometry have starting and ending points,
while the
+ * {@code Line} class in this package extends to infinite.</div>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3 (derived from geotk-2.0)
- * @version 0.3
+ * @version 0.5
  * @module
  */
 package org.apache.sis.math;

Modified: sis/branches/JDK8/src/main/javadoc/stylesheet.css
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/src/main/javadoc/stylesheet.css?rev=1654231&r1=1654230&r2=1654231&view=diff
==============================================================================
--- sis/branches/JDK8/src/main/javadoc/stylesheet.css (original)
+++ sis/branches/JDK8/src/main/javadoc/stylesheet.css Fri Jan 23 15:08:27 2015
@@ -213,3 +213,11 @@ div.block pre, code, tt, dt code, table
   line-height: 1em;
   font-size:   1em;
 }
+
+/* Appareance of links in the "Description" column of class and package summaries.
+ * JDK style uses bold characters for the left column, which contains the class and
+ * package names. But we do not want those bold characters to apply to the descriptions.
+ */
+td.colLast a:link {
+  font-weight: normal;
+}



Mime
View raw message