001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/io/rtree/HyperPoint.java $ 002 //---------------------------------------- 003 //RTree implementation. 004 //Copyright (C) 2002-2004 Wolfgang Baer - WBaer@gmx.de 005 // 006 //This library is free software; you can redistribute it and/or 007 //modify it under the terms of the GNU Lesser General Public 008 //License as published by the Free Software Foundation; either 009 //version 2.1 of the License, or (at your option) any later version. 010 // 011 //This library is distributed in the hope that it will be useful, 012 //but WITHOUT ANY WARRANTY; without even the implied warranty of 013 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 //Lesser General Public License for more details. 015 // 016 //You should have received a copy of the GNU Lesser General Public 017 //License along with this library; if not, write to the Free Software 018 //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 019 //---------------------------------------- 020 021 package org.deegree.io.rtree; 022 023 import java.io.Serializable; 024 025 /** 026 * <p> 027 * Point in multidimensional space. Based on double coordinates. 028 * </p> 029 * 030 * @author Wolfgang Baer - WBaer@gmx.de 031 */ 032 public class HyperPoint implements Serializable { 033 034 private double[] coords; 035 036 /** 037 * Constructor.<br> 038 * Length of given array sets the dimension. 039 * 040 * @param coords - 041 * array with double values of the coordinates. 042 */ 043 public HyperPoint( double[] coords ) { 044 // this.coords = coords; 045 this.coords = new double[] { coords[0], coords[1] }; 046 } 047 048 /** 049 * Creates a null HyperPoint with coordinates Double.NaN. Mostly used internal. 050 * 051 * @param dimension - 052 * int for dimension of point 053 * @return HyperPoint 054 */ 055 protected static HyperPoint getNullHyperPoint( int dimension ) { 056 double[] point = new double[dimension]; 057 for ( int i = 0; i < dimension; i++ ) 058 point[i] = Double.NaN; 059 return new HyperPoint( point ); 060 } 061 062 /** 063 * Returns the coordinates as double array. 064 * 065 * @return double[] 066 * 067 */ 068 public double[] getCoords() { 069 return coords; 070 } 071 072 /** 073 * Returns the coordinate for given index. 074 * 075 * @param index - 076 * int 077 * @return double - coordinate 078 */ 079 public double getCoord( int index ) { 080 return coords[index]; 081 } 082 083 /** 084 * Returns the dimension of the HyperPoint. 085 * 086 * @return int 087 */ 088 public int getDimension() { 089 return coords.length; 090 } 091 092 /** 093 * Builds a String representation of the HyperPoint. 094 * 095 * @return String 096 */ 097 public String toString() { 098 String ret = ""; 099 100 for ( int i = 0; i < coords.length; i++ ) { 101 ret += ( coords[i] + ", " ); 102 } 103 104 return ret; 105 } 106 107 /** 108 * Implements equals 109 * 110 * @see java.lang.Object#equals(java.lang.Object) 111 */ 112 public boolean equals( Object obj ) { 113 HyperPoint point = (HyperPoint) obj; 114 for ( int i = 0; i < coords.length; i++ ) { 115 if ( this.coords[i] != point.coords[i] ) 116 return false; 117 } 118 return true; 119 } 120 121 /** 122 * Implements clone. 123 * 124 * @see java.lang.Object#clone() 125 */ 126 protected Object clone() { 127 double[] point = new double[coords.length]; 128 129 for ( int i = 0; i < coords.length; i++ ) 130 point[i] = coords[i]; 131 132 return new HyperPoint( point ); 133 } 134 }