Class: Cartesius::Segment
- Inherits:
-
Object
- Object
- Cartesius::Segment
- Extended by:
- Forwardable
- Includes:
- Numerificator
- Defined in:
- lib/cartesius/segment.rb
Instance Attribute Summary collapse
-
#extreme1 ⇒ Object
readonly
Returns the value of attribute extreme1.
-
#extreme2 ⇒ Object
readonly
Returns the value of attribute extreme2.
Instance Method Summary collapse
- #==(segment) ⇒ Object
- #congruent?(segment) ⇒ Boolean
- #extremes ⇒ Object
-
#initialize(extreme1:, extreme2:) ⇒ Segment
constructor
A new instance of Segment.
- #length ⇒ Object
- #mid ⇒ Object
- #to_line ⇒ Object
Constructor Details
#initialize(extreme1:, extreme2:) ⇒ Segment
Returns a new instance of Segment.
12 13 14 15 16 |
# File 'lib/cartesius/segment.rb', line 12 def initialize(extreme1:, extreme2:) @extreme1, @extreme2 = extreme1, extreme2 validation @line = Line.by_points(point1: @extreme1, point2: @extreme2) end |
Instance Attribute Details
#extreme1 ⇒ Object (readonly)
Returns the value of attribute extreme1.
9 10 11 |
# File 'lib/cartesius/segment.rb', line 9 def extreme1 @extreme1 end |
#extreme2 ⇒ Object (readonly)
Returns the value of attribute extreme2.
9 10 11 |
# File 'lib/cartesius/segment.rb', line 9 def extreme2 @extreme2 end |
Instance Method Details
#==(segment) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/cartesius/segment.rb', line 42 def == (segment) segment.instance_of?(self.class) and ( (segment.extreme1 == extreme1 and segment.extreme2 == extreme2) or (segment.extreme1 == extreme2 and segment.extreme2 == extreme1) ) end |
#congruent?(segment) ⇒ Boolean
37 38 39 40 |
# File 'lib/cartesius/segment.rb', line 37 def congruent?(segment) segment.instance_of?(self.class) and segment.length == self.length end |
#extremes ⇒ Object
33 34 35 |
# File 'lib/cartesius/segment.rb', line 33 def extremes [@extreme1, @extreme2] end |
#length ⇒ Object
22 23 24 |
# File 'lib/cartesius/segment.rb', line 22 def length Point.distance(@extreme1, @extreme2) end |
#mid ⇒ Object
26 27 28 29 30 31 |
# File 'lib/cartesius/segment.rb', line 26 def mid Point.new( x: numberfy(@extreme1.x + @extreme2.x, 2), y: numberfy(@extreme1.y + @extreme2.y, 2) ) end |
#to_line ⇒ Object
18 19 20 |
# File 'lib/cartesius/segment.rb', line 18 def to_line @line end |