module Fox
  #
  # Represents a range in 3-D space.
  #
  class FXRange
  
    # Width of box [Float]
    attr_reader :width
    
    # Height of box [Float]
    attr_reader :height
    
    # Depth of box [Float]
    attr_reader :depth
    
    # Length of longest side [Float]
    attr_reader :longest
    
    # Length of shortest side [Float]
    attr_reader :shortest
    
    # Center point [FXVec]
    attr_reader :center
    
    # Length of the diagonal [Float]
    attr_reader :diagonal
    
    #
    # Initialize
    #
    def initialize(xlo=0.0, xhi=0.0, ylo=0.0, yhi=0.0, zlo=0.0, zhi=0.0) ; end

    #
    # Return the length of side _i_, where _i_ is 0, 1 or 2.
    #
    def side(i) ; end

    #
    # Returns +true+ if this is an empty range (i.e. if any of the side
    # lengths is zero or less).
    #
    def empty?() ; end

    #
    # Returns +true+ if any part of this range overlaps
    # the _other_ range.
    #
    def overlaps?(other) ; end

    #
    # Returns +true+ if this range contains the point (_x_, _y_, _z_).
    #
    def contains?(x, y, z) ; end

    #
    # Include the given range or point into this range. Valid forms are:
    #
    #     range.include(aRange) -> range
    #     range.include(x, y, z) -> range
    #     range.include(vec)     -> range
    #
    def include(*args) ; end

    #
    # Clip this range against _other_ range.
    #
    def clipTo(other) ; end

    #
    # Return the corners of this box as an array of eight points.
    #
    def corners() ; end

    #
    # Ray intersection test
    #
    def intersects?(u, v) ; end
  end
end
