Sha256: 12720afd399fa794f132e2a6e2e131194abf6e69a8819277512b6cdfb07ab153

Contents?: true

Size: 1.3 KB

Versions: 8

Compression:

Stored size: 1.3 KB

Contents

# require_relative 'vertex.rb'
# require_relative 'edge.rb'
  class Face
    attr_reader :edges, :vertices
    # Contains
    attr_accessor :value

    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

    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
    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
  end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
zadt-1.1.6 lib/zadt/AbstractDataTypes/Graph/face.rb
zadt-1.1.5 lib/zadt/AbstractDataTypes/Graph/face.rb
zadt-1.1.4 lib/zadt/AbstractDataTypes/Graph/face.rb
zadt-1.1.3 lib/zadt/AbstractDataTypes/Graph/face.rb
zadt-1.1.2 lib/zadt/AbstractDataTypes/Graph/face.rb
zadt-1.1.1 lib/zadt/AbstractDataTypes/Graph/face.rb
zadt-1.1.0 lib/zadt/AbstractDataTypes/Graph/face.rb
zadt-0.1.9 lib/zadt/AbstractDataTypes/Graph/face.rb