class SimplifyRb::Simplifier

Public Instance Methods

process(raw_points, tolerance = 1, highest_quality = false) click to toggle source
# File lib/simplify_rb.rb, line 8
def process(raw_points, tolerance = 1, highest_quality = false)
  raise ArgumentError.new('raw_points must be enumerable') unless raw_points.is_a? Enumerable

  return raw_points if raw_points.length <= 1

  sq_tolerance = tolerance * tolerance

  points = raw_points.map { |p| Point.new(p) }

  unless highest_quality
    points = RadialDistanceSimplifier.new.process(points, sq_tolerance)
  end

  DouglasPeuckerSimplifier.new
    .process(points, sq_tolerance)
    .map(&:original_entity)
end