Sha256: 8f5f91bc863863488d100bed83b2b3b3a41e364f0ef381d1ef4994ac665d9aa2

Contents?: true

Size: 808 Bytes

Versions: 7

Compression:

Stored size: 808 Bytes

Contents

# -*- coding: utf-8 -*-


require 'rays/ext'


module Rays


  class Point

    include Comparable
    include Enumerable

    def move_to(*args)
      dup.move_to!(*args)
    end

    def move_by(*args)
      dup.move_by!(*args)
    end

    def zero?()
      length == 0
    end

    def each(&block)
      to_a.each(&block)
    end

    def to_a(dimension = 2)
      case dimension
      when 1 then [x]
      when 2 then [x, y]
      when 3 then [x, y, z]
      else raise ArgumentError
      end
    end

    def to_s(dimension = 2)
      to_a(dimension).to_s
    end

    def <=>(o)
      ret = x <=> o.x; return ret if ret != 0
      ret = y <=> o.y; return ret if ret != 0
            z <=> o.z
    end

    def inspect()
      "#<Rays::Point #{to_a(3).join ', '}>"
    end

  end# Point


end# Rays

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rays-0.1.28 lib/rays/point.rb
rays-0.1.27 lib/rays/point.rb
rays-0.1.26 lib/rays/point.rb
rays-0.1.25 lib/rays/point.rb
rays-0.1.24 lib/rays/point.rb
rays-0.1.23 lib/rays/point.rb
rays-0.1.22 lib/rays/point.rb