class PerfectShape::Ellipse

Constants

MESSAGE_CANNOT_UPDATE_ATTRIUBTE

Public Class Methods

new(x: 0, y: 0, width: 1, height: 1, center_x: nil, center_y: nil, radius_x: nil, radius_y: nil) click to toggle source
Calls superclass method PerfectShape::Arc::new
# File lib/perfect_shape/ellipse.rb, line 28
def initialize(x: 0, y: 0, width: 1, height: 1, center_x: nil, center_y: nil, radius_x: nil, radius_y: nil)
  super
  @initialized = true
end

Public Instance Methods

contain?(x_or_point, y = nil, outline: false, distance_tolerance: 0) click to toggle source

Checks if ellipse contains point (two-number Array or x, y args)

@param x The X coordinate of the point to test. @param y The Y coordinate of the point to test.

@return true if the point lies within the bound of the ellipse, false if the point lies outside of the ellipse’s bounds.

Calls superclass method PerfectShape::Arc#contain?
# File lib/perfect_shape/ellipse.rb, line 65
def contain?(x_or_point, y = nil, outline: false, distance_tolerance: 0)
  # This is implemented again even though super would have just worked to have an optimized algorithm for Ellipse.
  x, y = Point.normalize_point(x_or_point, y)
  return unless x && y
  if outline
    super(x, y, outline: true, distance_tolerance: distance_tolerance)
  else
    ellw = self.width
    return false if ellw <= 0.0
    normx = (x - self.x) / ellw - 0.5
    ellh = self.height
    return false if ellh <= 0.0
    normy = (y - self.y) / ellh - 0.5
    (normx * normx + normy * normy) < 0.25
  end
end
extent=(value) click to toggle source
Calls superclass method PerfectShape::Arc#extent=
# File lib/perfect_shape/ellipse.rb, line 49
def extent=(value)
  if @initialized
    raise MESSAGE_CANNOT_UPDATE_ATTRIUBTE % 'extent'
  else
    super
  end
end
start=(value) click to toggle source
Calls superclass method PerfectShape::Arc#start=
# File lib/perfect_shape/ellipse.rb, line 41
def start=(value)
  if @initialized
    raise MESSAGE_CANNOT_UPDATE_ATTRIUBTE % 'start'
  else
    super
  end
end
type=(value) click to toggle source
Calls superclass method
# File lib/perfect_shape/ellipse.rb, line 33
def type=(value)
  if @initialized
    raise MESSAGE_CANNOT_UPDATE_ATTRIUBTE % 'type'
  else
    super
  end
end