Module: Sevgi::Geometry::Equation::Line

Extended by:
Line
Included in:
Line
Defined in:
lib/sevgi/geometry/equation/line.rb,
lib/sevgi/geometry/equation/line/diagonal.rb,
lib/sevgi/geometry/equation/line/vertical.rb,
lib/sevgi/geometry/equation/line/horizontal.rb

Defined Under Namespace

Classes: Diagonal, Horizontal, Vertical

Instance Method Summary collapse

Instance Method Details

#diagonal(slope:, intercept:) ⇒ Object



13
14
15
# File 'lib/sevgi/geometry/equation/line.rb', line 13

def diagonal(slope:, intercept:)
  Diagonal.new(slope:, intercept:)
end

#from_direction(point:, direction:) ⇒ Object



17
18
19
20
21
22
# File 'lib/sevgi/geometry/equation/line.rb', line 17

def from_direction(point:, direction:)
  return horizontal(point.y) if F.horizontal?(direction)
  return vertical(point.x)   if F.vertical?(direction)

  diagonal(slope: (slope = F.slopea(direction)), intercept: F.intercept(point, direction, slope))
end

#from_segment(segment) ⇒ Object



24
25
26
# File 'lib/sevgi/geometry/equation/line.rb', line 24

def from_segment(segment)
  from_direction(point: segment.position, direction: segment.direction)
end

#horizontal(const) ⇒ Object



28
29
30
# File 'lib/sevgi/geometry/equation/line.rb', line 28

def horizontal(const)
  Horizontal.new(const)
end

#vertical(const) ⇒ Object



32
33
34
# File 'lib/sevgi/geometry/equation/line.rb', line 32

def vertical(const)
  Vertical.new(const)
end