Sha256: 9f451affc83d2e0c4626c54d20af8c325904321b77de95de349d6bfcc455829b

Contents?: true

Size: 841 Bytes

Versions: 6

Compression:

Stored size: 841 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]
      when 4 then [x, y, z, 1.0]
      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

6 entries across 6 versions & 1 rubygems

Version Path
rays-0.1.34 lib/rays/point.rb
rays-0.1.33 lib/rays/point.rb
rays-0.1.32 lib/rays/point.rb
rays-0.1.31 lib/rays/point.rb
rays-0.1.30 lib/rays/point.rb
rays-0.1.29 lib/rays/point.rb