export function radialDistance()

in src/lib/components/molecules/canvas-map/lib/util/simplify.js [246:288]


export function radialDistance(
  flatCoordinates,
  offset,
  end,
  stride,
  squaredTolerance,
  simplifiedFlatCoordinates,
  simplifiedOffset,
) {
  if (end <= offset + stride) {
    // zero or one point, no simplification possible, so copy and return
    for (; offset < end; offset += stride) {
      simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset]
      simplifiedFlatCoordinates[simplifiedOffset++] =
        flatCoordinates[offset + 1]
    }
    return simplifiedOffset
  }
  let x1 = flatCoordinates[offset]
  let y1 = flatCoordinates[offset + 1]
  // copy first point
  simplifiedFlatCoordinates[simplifiedOffset++] = x1
  simplifiedFlatCoordinates[simplifiedOffset++] = y1
  let x2 = x1
  let y2 = y1
  for (offset += stride; offset < end; offset += stride) {
    x2 = flatCoordinates[offset]
    y2 = flatCoordinates[offset + 1]
    if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {
      // copy point at offset
      simplifiedFlatCoordinates[simplifiedOffset++] = x2
      simplifiedFlatCoordinates[simplifiedOffset++] = y2
      x1 = x2
      y1 = y2
    }
  }
  if (x2 != x1 || y2 != y1) {
    // copy last point
    simplifiedFlatCoordinates[simplifiedOffset++] = x2
    simplifiedFlatCoordinates[simplifiedOffset++] = y2
  }
  return simplifiedOffset
}