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 }