Sha256: 9e23d3ce2cbf97d0c2568793af638f17443ec07c91400ecc34253a3c98e9dd75

Contents?: true

Size: 1.33 KB

Versions: 14

Compression:

Stored size: 1.33 KB

Contents

require 'matrix'

module Geometry
=begin
An object representing the size of something.
 
Supports all of the familiar {Vector} methods as well as a few convenience 
methods (width, height and depth).
 
== Usage
 
=== Constructor
   size = Geometry::Size[x,y,z]
=end

    class Size < Vector
	attr_reader :x, :y, :z
	
	# Allow vector-style initialization, but override to support copy-init
	# from Vector, Point or another Size
	#
	# @overload [](x,y,z,...)
	# @overload [](Point)
	# @overload [](Size)
	# @overload [](Vector)
	# @return [Size]    A new {Size} object
	def self.[](*array)
	    array = array[0].to_a unless array[0].is_a?(Numeric)
	    super *array
	end
	
	# Allow comparison with an Array, otherwise do the normal thing
	def ==(other)
	    return @elements == other if other.is_a?(Array)
	    super other
	end

	def inspect
	    'Size' + @elements.inspect
	end
	def to_s
	    'Size' + @elements.to_s
	end

	# @return [Number]  The size along the Z axis
	def depth
	    z
	end

	# @return [Number]  The size along the Y axis
	def height
	    y
	end

	# @return [Number]  The size along the X axis
	def width
	    x
	end

	# @return [Number] X-component (width)
	def x
	    @elements[0]
	end

	# @return [Number] Y-component (height)
	def y
	    @elements[1]
	end

	# @return [Number] Z-component (depth)
	def z
	    @elements[2]
	end
    end
end

Version data entries

14 entries across 14 versions & 3 rubygems

Version Path
geometry-in-ruby-0.0.5 lib/geometry/size.rb
geometry-in-ruby-0.0.4 lib/geometry/size.rb
geometry-in-ruby-0.0.3 lib/geometry/size.rb
geometry-in-ruby-0.0.2 lib/geometry/size.rb
geometry-in-ruby-0.0.1 lib/geometry/size.rb
aurora-geometry-0.0.5 lib/geometry/size.rb
aurora-geometry-0.0.4 lib/aurora-geometry/size.rb
aurora-geometry-0.0.3 lib/aurora-geometry/size.rb
aurora-geometry-0.0.2 lib/geometry/size.rb
geometry-6.1 lib/geometry/size.rb
geometry-6 lib/geometry/size.rb
geometry-5 lib/geometry/size.rb
geometry-4 lib/geometry/size.rb
geometry-3 lib/geometry/size.rb