uk.ac.starlink.table.join
Class NdRange

java.lang.Object
  extended by uk.ac.starlink.table.join.NdRange

public class NdRange
extends java.lang.Object

Describes a range in an N-dimensional space. Each dimension may have a minimum and maximum; each of these bounds is a Comparable object. Any or all of the bounds may be missing (null); this indicates that no bounds are in operation in that dimension, so that all values are effectively inside it.

Since:
21 Nov 2007

Constructor Summary
NdRange(java.lang.Comparable[] mins, java.lang.Comparable[] maxs)
          Constructs a range giving its bounds.
NdRange(int ndim)
          Constructs a range with no bounds.
 
Method Summary
 boolean equals(java.lang.Object o)
           
 java.lang.Comparable[] getMaxs()
          Returns the array of maximum values.
 java.lang.Comparable[] getMins()
          Returns the array of minimum values.
 int hashCode()
           
static NdRange intersection(NdRange r1, NdRange r2)
          Returns a new range which is the intersection of two given ones.
 boolean isBounded()
          Indicates whether this range has any restrictions on inclusion at all.
 boolean isInside(java.lang.Object[] coords)
          Determines whether a set of coordinates is within this range.
static java.lang.Comparable max(java.lang.Comparable c1, java.lang.Comparable c2, boolean failNull)
          Returns the greater of two objects, with explicit null handling.
static java.lang.Comparable min(java.lang.Comparable c1, java.lang.Comparable c2, boolean failNull)
          Returns the lesser of two objects, with explicit null handling.
 java.lang.String toString()
          Returns a human-readable description of this range.
static NdRange union(NdRange r1, NdRange r2)
          Returns a new range which is the union of two given ones.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

NdRange

public NdRange(java.lang.Comparable[] mins,
               java.lang.Comparable[] maxs)
Constructs a range giving its bounds. The arrays are copied (cloned) by the constructor, so that subsequent changes to them will not be reflected in the state of this object. Any of the bounds may be null.

Parameters:
mins - minimum bounds
maxs - maximum bounds

NdRange

public NdRange(int ndim)
Constructs a range with no bounds. Nothing is excluded from it.

Parameters:
ndim - dimensionality
Method Detail

isBounded

public boolean isBounded()
Indicates whether this range has any restrictions on inclusion at all.

Returns:
true iff isInside(java.lang.Object[]) can ever return false

getMins

public java.lang.Comparable[] getMins()
Returns the array of minimum values. Unknown elements may be nulls.

Returns:
ndim-element array of minima, some may be null

getMaxs

public java.lang.Comparable[] getMaxs()
Returns the array of maximum values. Unknown elements may be nulls.

Returns:
ndim-element array of maxima, some may be null

isInside

public boolean isInside(java.lang.Object[] coords)
Determines whether a set of coordinates is within this range. Objects on the bounds count as inside. This method will always return true if isBounded() returns false.

Parameters:
coords - point to assess
Returns:
false if the point is definitely outside this range
Throws:
java.lang.ClassCastException - if objects are not mutually comparable

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

toString

public java.lang.String toString()
Returns a human-readable description of this range.

Overrides:
toString in class java.lang.Object

intersection

public static NdRange intersection(NdRange r1,
                                   NdRange r2)
Returns a new range which is the intersection of two given ones. If the intersection is empty (regions are disjoint) then null will be returned.

Parameters:
r1 - first range
r2 - second range
Returns:
non-empty intersection, or null

union

public static NdRange union(NdRange r1,
                            NdRange r2)
Returns a new range which is the union of two given ones.

Parameters:
r1 - first range
r2 - second range
Returns:
union

min

public static java.lang.Comparable min(java.lang.Comparable c1,
                                       java.lang.Comparable c2,
                                       boolean failNull)
Returns the lesser of two objects, with explicit null handling.

Parameters:
c1 - first object
c2 - second object
failNull - what happens if c1 or c2 is null; if true null is returned, if false the non-null value is returned
Returns:
minimum
Throws:
java.lang.ClassCastException - if objects are not mutually comparable

max

public static java.lang.Comparable max(java.lang.Comparable c1,
                                       java.lang.Comparable c2,
                                       boolean failNull)
Returns the greater of two objects, with explicit null handling.

Parameters:
c1 - first object
c2 - second object
failNull - what happens if c1 or c2 is null; if true null is returned, if false the non-null value is returned
Returns:
maximum
Throws:
java.lang.ClassCastException - if objects are not mutually comparable

Copyright © 2004 CLRC: Central Laboratory of the Research Councils. All rights reserved.