Class: Sevgi::Geometry::Element

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

Direct Known Subclasses

Arced, Lined

Defined Under Namespace

Classes: Arced, Lined

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.arcedObject



8
# File 'lib/sevgi/geometry/element.rb', line 8

def self.arced(...) = Arced.build(...)

.linedObject



6
# File 'lib/sevgi/geometry/element.rb', line 6

def self.lined(...) = Lined.build(...)

Instance Method Details

#at(point = nil, dx: 0, dy: 0) ⇒ Object

Core API



12
13
14
15
16
17
# File 'lib/sevgi/geometry/element.rb', line 12

def at(point = nil, dx: 0, dy: 0)
  translate(
    ((point ||= position).x - position.x) + dx,
    (point.y - position.y) + dy
  )
end

#boxObject

Raises:

  • (NoMethodError)


19
# File 'lib/sevgi/geometry/element.rb', line 19

def box = raise NoMethodError, "#{self.class}#box must be implemented"

#equationsObject

Raises:

  • (NoMethodError)


21
# File 'lib/sevgi/geometry/element.rb', line 21

def equations = raise NoMethodError, "#{self.class}#equations must be implemented"

#ignorable?(precision: nil) ⇒ Boolean

Returns:

  • (Boolean)


23
# File 'lib/sevgi/geometry/element.rb', line 23

def ignorable?(precision: nil) = F.zero?(box.width, precision:) && F.zero?(box.height, precision:)

#positionObject

Raises:

  • (NoMethodError)


25
# File 'lib/sevgi/geometry/element.rb', line 25

def position = raise NoMethodError, "#{self.class}#position must be implemented"

#translate(_x, _y) ⇒ Object

Raises:

  • (NoMethodError)


27
# File 'lib/sevgi/geometry/element.rb', line 27

def translate(_x, _y) = raise NoMethodError, "#{self.class}#translate must be implemented"