Sha256: 145e33a3a77ca1da2fe4837b236de22c0e80dadd9f0f8b9cd1b4276f2cedb26f

Contents?: true

Size: 907 Bytes

Versions: 1

Compression:

Stored size: 907 Bytes

Contents

class Integer
  ##
  # Calculate a random chance using easy notation: 1 =~ 50 :: 1 in 50 chance

  def =~ n #
    rand(n) <= (self - 1)
  end
end

class Numeric
  ##
  # Is M close to N within a certain delta?

  def close_to? n, delta = 0.01
    (self - n).abs < delta
  end

  ##
  # Normalize a number to be within 0...360

  def degrees
    (self < 0 ? self + 360 : self) % 360
  end

  ##
  # I am honestly befuddled by this code, and I wrote it.
  #
  # I should probably remove it and start over.
  #
  # Consider this method private, even tho it is in use by the demos.

  def relative_angle n, max
    deltaCW = (self - n).degrees
    deltaCC = (n - self).degrees

    return if deltaCC < 0.1 || deltaCW < 0.1

    if deltaCC.abs < max then
      deltaCC
    elsif deltaCW.close_to? 180 then
      [-max, max].sample
    elsif deltaCW < deltaCC then
      -max
    else
      max
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
graphics-1.0.0b1 lib/graphics/extensions.rb