class EdgeList

Public Class Methods

new() click to toggle source
# File lib/ruby3mf/edge_list.rb, line 3
def initialize
  @edges = { }
end

Public Instance Methods

add_edge(first_vertex, second_vertex) click to toggle source
# File lib/ruby3mf/edge_list.rb, line 7
def add_edge(first_vertex, second_vertex)
  if first_vertex < second_vertex
    edge = "#{first_vertex}:#{second_vertex}"
  else
    edge = "#{second_vertex}:#{first_vertex}"
  end

  (pos_count, neg_count) = @edges[edge]

  if pos_count == nil or neg_count == nil
    pos_count = 0
    neg_count = 0
  end

  pos_count += 1 if first_vertex < second_vertex
  neg_count += 1 if second_vertex < first_vertex

  @edges[edge] = [pos_count, neg_count]
end
edge_count(first_vertex, second_vertex) click to toggle source
# File lib/ruby3mf/edge_list.rb, line 27
def edge_count(first_vertex, second_vertex)
  if first_vertex < second_vertex
    edge = "#{first_vertex}:#{second_vertex}"
  else
    edge = "#{second_vertex}:#{first_vertex}"
  end

  @edges[edge]
end
print_list() click to toggle source
verify_edges() click to toggle source
# File lib/ruby3mf/edge_list.rb, line 44
def verify_edges
  @edges.each do |key, value|
    (pos, neg) = value

    if (pos > 1 and neg == 0) or (pos == 0 and neg > 1)
      return :bad_orientation
    elsif pos + neg == 1
      return :hole
    elsif pos != 1 or neg != 1
      return :nonmanifold
    end
  end

  :ok
end