    001    //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.4_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    }