    001    /*
    002     * Licensed to the Apache Software Foundation (ASF) under one or more
    003     * contributor license agreements.  See the NOTICE file distributed with
    004     * this work for additional information regarding copyright ownership.
    005     * The ASF licenses this file to You under the Apache License, Version 2.0
    006     * (the "License"); you may not use this file except in compliance with
    007     * the License.  You may obtain a copy of the License at
    008     *
    009     *      http://www.apache.org/licenses/LICENSE-2.0
    010     *
    011     * Unless required by applicable law or agreed to in writing, software
    012     * distributed under the License is distributed on an "AS IS" BASIS,
    013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014     * See the License for the specific language governing permissions and
    015     * limitations under the License.
    016     */
    017    package org.apache.commons.math3.geometry.euclidean.oned;
    018
    019    import org.apache.commons.math3.geometry.partitioning.Region.Location;
    020
    021
    022    /** This class represents a 1D interval.
    023     * @see IntervalsSet
    024     * @version $Id: Interval.java 1422195 2012-12-15 06:45:18Z psteitz $
    025     * @since 3.0
    026     */
    027    public class Interval {
    028
    029        /** The lower bound of the interval. */
    030        private final double lower;
    031
    032        /** The upper bound of the interval. */
    033        private final double upper;
    034
    035        /** Simple constructor.
    036         * @param lower lower bound of the interval
    037         * @param upper upper bound of the interval
    038         */
    039        public Interval(final double lower, final double upper) {
    040            this.lower = lower;
    041            this.upper = upper;
    042        }
    043
    044        /** Get the lower bound of the interval.
    045         * @return lower bound of the interval
    046         * @since 3.1
    047         */
    048        public double getInf() {
    049            return lower;
    050        }
    051
    052        /** Get the lower bound of the interval.
    053         * @return lower bound of the interval
    054         * @deprecated as of 3.1, replaced by {@link #getInf()}
    055         */
    056        @Deprecated
    057        public double getLower() {
    058            return getInf();
    059        }
    060
    061        /** Get the upper bound of the interval.
    062         * @return upper bound of the interval
    063         * @since 3.1
    064         */
    065        public double getSup() {
    066            return upper;
    067        }
    068
    069        /** Get the upper bound of the interval.
    070         * @return upper bound of the interval
    071         * @deprecated as of 3.1, replaced by {@link #getSup()}
    072         */
    073        @Deprecated
    074        public double getUpper() {
    075            return getSup();
    076        }
    077
    078        /** Get the size of the interval.
    079         * @return size of the interval
    080         * @since 3.1
    081         */
    082        public double getSize() {
    083            return upper - lower;
    084        }
    085
    086        /** Get the length of the interval.
    087         * @return length of the interval
    088         * @deprecated as of 3.1, replaced by {@link #getSize()}
    089         */
    090        @Deprecated
    091        public double getLength() {
    092            return getSize();
    093        }
    094
    095        /** Get the barycenter of the interval.
    096         * @return barycenter of the interval
    097         * @since 3.1
    098         */
    099        public double getBarycenter() {
    100            return 0.5 * (lower + upper);
    101        }
    102
    103        /** Get the midpoint of the interval.
    104         * @return midpoint of the interval
    105         * @deprecated as of 3.1, replaced by {@link #getBarycenter()}
    106         */
    107        @Deprecated
    108        public double getMidPoint() {
    109            return getBarycenter();
    110        }
    111
    112        /** Check a point with respect to the interval.
    113         * @param point point to check
    114         * @param tolerance tolerance below which points are considered to
    115         * belong to the boundary
    116         * @return a code representing the point status: either {@link
    117         * Location#INSIDE}, {@link Location#OUTSIDE} or {@link Location#BOUNDARY}
    118         * @since 3.1
    119         */
    120        public Location checkPoint(final double point, final double tolerance) {
    121            if (point < lower - tolerance || point > upper + tolerance) {
    122                return Location.OUTSIDE;
    123            } else if (point > lower + tolerance && point < upper - tolerance) {
    124                return Location.INSIDE;
    125            } else {
    126                return Location.BOUNDARY;
    127            }
    128        }
    129
    130    }