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?
eql?(segment)
Alias for: congruent?
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