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