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