Class: Sevgi::Geometry::Ruler

Inherits:
Interval
  • Object
show all
Defined in:
lib/sevgi/geometry/sundries/ruler.rb

Overview

<———————— d = n x sd —————————–><— waste = 2 x margin —> <—– u = unit x multiple —–>

<—— sd = su x sn —–> (computed margin >= given margin)

|———-----------———-|———-----------———-|···························|

<—————————————– brut ———————————————->

Direct Known Subclasses

Grid::Axis, RulerEven

Instance Attribute Summary collapse

Attributes inherited from Interval

#n, #u

Instance Method Summary collapse

Methods inherited from Interval

#[], [], #count, #d, #ds, #h, #hs, #nds, #nhs

Constructor Details

#initialize(brut:, unit:, multiple:, margin: 0.0) ⇒ Ruler



64
65
66
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 64

def initialize(brut:, unit:, multiple:, margin: 0.0)
  super(@sub = Interval.new(unit, multiple), divide(unit:, multiple:, brut: (@brut = brut.to_f), margin:))
end

Instance Attribute Details

#brutObject (readonly)

Returns the value of attribute brut.



62
63
64
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 62

def brut
  @brut
end

#subObject (readonly)

Returns the value of attribute sub.



62
63
64
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 62

def sub
  @sub
end

Instance Method Details

#expandObject



68
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 68

def expand = self.class.new(unit: sub.u, multiple: 1, brut: d + waste, margin:)

#marginObject



70
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 70

def margin = @margin ||= waste / 2.0

#msObject



72
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 72

def ms     = @ms ||= expand.ds

#sdObject



78
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 78

def sd     = @sub.d

#snObject



76
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 76

def sn     = @sub.n

#suObject



80
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 80

def su     = @sub.u

#wasteObject



74
# File 'lib/sevgi/geometry/sundries/ruler.rb', line 74

def waste  = @waste ||= brut - d