Class: Cartesius::Segment

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Numerificator
Defined in:
lib/cartesius/segment.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#extreme1Object (readonly)

Returns the value of attribute extreme1.



9
10
11
# File 'lib/cartesius/segment.rb', line 9

def extreme1
  @extreme1
end

#extreme2Object (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

Returns:

  • (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

#extremesObject



33
34
35
# File 'lib/cartesius/segment.rb', line 33

def extremes
  [@extreme1, @extreme2]
end

#lengthObject



22
23
24
# File 'lib/cartesius/segment.rb', line 22

def length
  Point.distance(@extreme1, @extreme2)
end

#midObject



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_lineObject



18
19
20
# File 'lib/cartesius/segment.rb', line 18

def to_line
  @line
end