class Face

Attributes

edges[R]
value[RW]

Contains

vertices[R]

Public Class Methods

new(edges_array, value = Hash.new) click to toggle source
# File lib/zadt/AbstractDataTypes/Graph/face.rb, line 6
def initialize(edges_array, value = Hash.new)
  raise "not enough edges" if edges_array.length < 3
  edges_array.each {|edge| raise "not an edge" unless edge.is_a?(Edge)}
  @edges = edges_array
  vertices = edges_array.map{ |edge| edge.connection}.inject(:+).uniq
  @vertices = ensure_cyclic(vertices)
  @value = value
end

Public Instance Methods

inspect() click to toggle source
# File lib/zadt/AbstractDataTypes/Graph/face.rb, line 15
def inspect
  output = "This face contains the following vertices:"
  output += @vertices.to_s
  output = "This face contains the following edges:"
  output += @edges.to_s
  output
end

Private Instance Methods

ensure_cyclic(vertices) click to toggle source
# File lib/zadt/AbstractDataTypes/Graph/face.rb, line 24
def ensure_cyclic(vertices)
  connect_testers = vertices.dup
  connected_vertices = []
  connected_vertices << connect_testers.pop
  until connected_vertices.length == vertices.length
    continue = false
    connect_testers.each do |vert|
      if (connected_vertices.last).is_connected?(vert)
        connected_vertices << vert
        continue = true
        break
      end
    end
    connect_testers.delete(connected_vertices.last)
    raise "Not cyclic edges" if continue == false
  end
  connected_vertices
end