module StraightSkeleton::Node

def active?

def active?
  @nodes.include? self
end

def index

def index
  @index ||= @nodes.index self
end

def next

def next
  @neighbours[1]
end

def prev

def prev
  @neighbours[0]
end

def project(travel)

def project(travel)
  det = normals.inject(&:cross) if normals.all?
  case
  when det&.nonzero?
    x = normals.map { |normal| travel - @travel + normal.dot(point) }
    (normals[0].perp * x[1] - normals[1].perp * x[0]) / det
  when normals[0] then normals[0] * (travel - @travel) + point
  when normals[1] then normals[1] * (travel - @travel) + point
  end
end

def reflex?

def reflex?
  normals.inject(&:cross) * @nodes.direction <= 0
end

def splits?

def splits?
  terminal? || reflex?
end

def terminal?

def terminal?
  @neighbours.one?
end