# all files / ol/geom/flat/ lengthflatgeom.js

100% Statements 19/19
100% Branches 0/0
100% Functions 2/2
100% Lines 19/19

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    421×

    1×
    8×
    8×
    8×
    8×
    8×
    21×
    21×
    21×
    21×
    21×

    8×

    1×
    2×

    2×
    2×
    2×
    2×

     goog.provide('ol.geom.flat.length');

    /**
     * @param {Array.<number>} flatCoordinates Flat coordinates.
     * @param {number} offset Offset.
     * @param {number} end End.
     * @param {number} stride Stride.
     * @return {number} Length.
     */
    ol.geom.flat.length.lineString = function(flatCoordinates, offset, end, stride) {
      var x1 = flatCoordinates[offset];
      var y1 = flatCoordinates[offset + 1];
      var length = 0;
      var i;
      for (i = offset + stride; i < end; i += stride) {
        var x2 = flatCoordinates[i];
        var y2 = flatCoordinates[i + 1];
        length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
        x1 = x2;
        y1 = y2;
      }
      return length;
    };

    /**
     * @param {Array.<number>} flatCoordinates Flat coordinates.
     * @param {number} offset Offset.
     * @param {number} end End.
     * @param {number} stride Stride.
     * @return {number} Perimeter.
     */
    ol.geom.flat.length.linearRing = function(flatCoordinates, offset, end, stride) {
      var perimeter =
          ol.geom.flat.length.lineString(flatCoordinates, offset, end, stride);
      var dx = flatCoordinates[end - stride] - flatCoordinates[offset];
      var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];
      perimeter += Math.sqrt(dx * dx + dy * dy);
      return perimeter;
    };