Class: Sevgi::Geometry::Parm

Inherits:
Object
  • Object
show all
Defined in:
lib/sevgi/geometry/elements/parm.rb

Class Method Summary collapse

Class Method Details

.[](horizontal, vertical, position: Origin) ⇒ Object



8
9
10
11
12
# File 'lib/sevgi/geometry/elements/parm.rb', line 8

def self.[](horizontal, vertical, position: Origin)
  horizontal, vertical = Tuples[Segment, horizontal, vertical]

  new_by_segments(horizontal, vertical.reverse, horizontal.reverse, vertical, position:)
end

.new_by_height(horizontal:, tallness:, position: Origin) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/sevgi/geometry/elements/parm.rb', line 14

def self.new_by_height(horizontal:, tallness:, position: Origin)
  horizontal = Tuple[Segment, horizontal]
  tallness = Tuple[LengthAngle, tallness]

  height = tallness.length - horizontal.ly
  angle = tallness.angle
  length = height / F.sin(angle)

  self[horizontal, Segment[length, angle], position:]
end

.new_by_width(vertical:, wideness:, position: Origin) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/sevgi/geometry/elements/parm.rb', line 25

def self.new_by_width(vertical:, wideness:, position: Origin)
  vertical = Tuple[Segment, vertical]
  wideness = Tuple[LengthAngle, wideness]

  width = wideness.length - vertical.lx
  angle = wideness.angle
  length = width / F.cos(angle)

  self[Segment[length, angle], vertical, position:]
end