class Cartesius::Segment
Attributes
extreme1[R]
extreme2[R]
Public Class Methods
new(extreme1:, extreme2:)
click to toggle source
# 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
Public Instance Methods
==(segment)
click to toggle source
# File lib/cartesius/segment.rb, line 42 def == (segment) segment.instance_of?(self.class) && ( (segment.extreme1 == extreme1 && segment.extreme2 == extreme2) || (segment.extreme1 == extreme2 && segment.extreme2 == extreme1) ) end
congruent?(segment)
click to toggle source
# File lib/cartesius/segment.rb, line 37 def congruent?(segment) segment.instance_of?(self.class) && segment.length == self.length end
Also aliased as: eql?
extremes()
click to toggle source
# File lib/cartesius/segment.rb, line 33 def extremes [@extreme1, @extreme2] end
length()
click to toggle source
# File lib/cartesius/segment.rb, line 22 def length Point.distance(@extreme1, @extreme2) end
mid()
click to toggle source
# 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()
click to toggle source
# File lib/cartesius/segment.rb, line 18 def to_line @line end
Private Instance Methods
hash()
click to toggle source
# File lib/cartesius/segment.rb, line 59 def hash length.hash end
validation()
click to toggle source
# File lib/cartesius/segment.rb, line 53 def validation if @extreme1 == @extreme2 raise ArgumentError.new('Extremes cannot be the same!') end end