Class: Geometry::Annulus
- Inherits:
-
Object
- Object
- Geometry::Annulus
- Defined in:
- lib/geometry/annulus.rb
Overview
Instance Attribute Summary collapse
-
#center ⇒ Point
The center point of the Annulus.
-
#diameter ⇒ Number
The outer diameter.
- #inner_diameter ⇒ Object
- #inner_radius ⇒ Object
-
#max ⇒ Point
The upper right corner of the bounding Rectangle.
-
#min ⇒ Point
The lower left corner of the bounding Rectangle.
-
#minmax ⇒ Array<Point>
The lower left and upper right corners of the bounding Rectangle.
- #outer_diameter ⇒ Object (also: #diameter)
- #outer_radius ⇒ Object (also: #radius)
-
#radius ⇒ Number
The outer radius.
Instance Method Summary collapse
-
#initialize(center = Point.zero, **options) ⇒ Annulus
constructor
A new instance of Annulus.
Constructor Details
#initialize(center, : inner_radius, : outer_radius) ⇒ Annulus #initialize(center, : inner_diameter, : outer_diameter) ⇒ Annulus
Note:
The ‘center’ argument can also be passed as a named argument of the same name
Returns a new instance of Annulus.
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/geometry/annulus.rb', line 58 def initialize(center = Point.zero, **) @center = Point[.fetch(:center, center)] .delete :center raise ArgumentError, 'Annulus requires more than a center' if .empty? @inner_diameter = [:inner_diameter] @inner_radius = [:inner_radius] @outer_diameter = [:outer_diameter] || [:diameter] @outer_radius = [:outer_radius] || [:radius] end |
Instance Attribute Details
#center ⇒ Point
Returns The center point of the Geometry::Annulus.
14 15 16 |
# File 'lib/geometry/annulus.rb', line 14 def center @center end |
#diameter=(value) ⇒ Number
Returns the outer diameter.
42 43 44 |
# File 'lib/geometry/annulus.rb', line 42 def outer_diameter @outer_diameter || (@outer_radius && 2*@outer_radius) end |
#inner_diameter ⇒ Object
18 19 20 |
# File 'lib/geometry/annulus.rb', line 18 def inner_diameter @inner_diameter || (@inner_radius && 2*@inner_radius) end |
#inner_radius ⇒ Object
24 25 26 |
# File 'lib/geometry/annulus.rb', line 24 def inner_radius @inner_radius || (@inner_diameter && @inner_diameter/2) end |
#max ⇒ Point
Returns The upper right corner of the bounding Rectangle.
72 73 74 |
# File 'lib/geometry/annulus.rb', line 72 def max @center+radius end |
#min ⇒ Point
Returns The lower left corner of the bounding Rectangle.
78 79 80 |
# File 'lib/geometry/annulus.rb', line 78 def min @center-radius end |
#minmax ⇒ Array<Point>
Returns The lower left and upper right corners of the bounding Rectangle.
84 85 86 |
# File 'lib/geometry/annulus.rb', line 84 def minmax [self.min, self.max] end |
#outer_diameter ⇒ Object Also known as: diameter
30 31 32 |
# File 'lib/geometry/annulus.rb', line 30 def outer_diameter @outer_diameter || (@outer_radius && 2*@outer_radius) end |
#outer_radius ⇒ Object Also known as: radius
36 37 38 |
# File 'lib/geometry/annulus.rb', line 36 def outer_radius @outer_radius || (@outer_diameter && @outer_diameter/2) end |
#radius=(value) ⇒ Number
Returns the outer radius.
46 47 48 |
# File 'lib/geometry/annulus.rb', line 46 def outer_radius @outer_radius || (@outer_diameter && @outer_diameter/2) end |