def self.smooth(results, options)
step = options[:step].to_i
height = options[:height].to_i
min_color = options[:min_color]
max_color = options[:max_color]
last_color = options[:last_color]
has_min = options[:has_min]
has_max = options[:has_max]
has_last = options[:has_last]
line_color = options[:line_color]
img = Magick::Image.new((results.size - 1) * step + 4, height.to_i) {self.background_color = options[:background_color]}
img.format = "PNG"
draw = Magick::Draw.new
draw.stroke(line_color)
coords = []
i=0
results.each do |r|
coords.push [ 2 + i, (height - 3 - r/(101.0/(height-4))) ]
i += step
end
my_polyline(draw, coords)
if has_min == true
min_pt = coords[results.index(results.min)]
draw.fill(min_color)
draw.rectangle(min_pt[0]-2, min_pt[1]-2, min_pt[0]+2, min_pt[1]+2)
end
if has_max == true
max_pt = coords[results.index(results.max)]
draw.fill(max_color)
draw.rectangle(max_pt[0]-2, max_pt[1]-2, max_pt[0]+2, max_pt[1]+2)
end
if has_last == true
last_pt = coords[-1]
draw.fill(last_color)
draw.rectangle(last_pt[0]-2, last_pt[1]-2, last_pt[0]+2, last_pt[1]+2)
end
draw.draw(img)
img.to_blob
end