mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2026-10-07 13:27:25 +02:00
Fixing branch setup to match main
This commit is contained in:
77
Projekte/common/src/main/java/pp/util/Interval.java
Normal file
77
Projekte/common/src/main/java/pp/util/Interval.java
Normal file
@@ -0,0 +1,77 @@
|
||||
////////////////////////////////////////
|
||||
// Programming project code
|
||||
// UniBw M, 2022, 2023, 2024
|
||||
// www.unibw.de/inf2
|
||||
// (c) Mark Minas (mark.minas@unibw.de)
|
||||
////////////////////////////////////////
|
||||
|
||||
package pp.util;
|
||||
|
||||
import static pp.util.FloatMath.ZERO_TOLERANCE;
|
||||
import static pp.util.FloatMath.abs;
|
||||
|
||||
/**
|
||||
* Represents an interval. The start value must not be greater than the end value.
|
||||
*
|
||||
* @param from the start value of the interval
|
||||
* @param to the end value of the interval
|
||||
*/
|
||||
public record Interval(float from, float to) {
|
||||
|
||||
/**
|
||||
* Creates a new interval between two specified values.
|
||||
*
|
||||
* @param from the specified start value
|
||||
* @param to the specified end value
|
||||
*/
|
||||
public Interval {
|
||||
if (from > to)
|
||||
throw new IllegalArgumentException(from + " > " + to);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether this interval has length 0, i.e., from and to are equal.
|
||||
*/
|
||||
public boolean isEmpty() {
|
||||
return to == from;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the specified value is contained in this interval. Note that an empty interval may
|
||||
* contain the value if the value is the start and the end value of the interval.
|
||||
*
|
||||
* @param value the specified value to check
|
||||
*/
|
||||
public boolean contains(float value) {
|
||||
return from - value <= ZERO_TOLERANCE && value - to <= ZERO_TOLERANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the specified interval is contained as a sub-interval.
|
||||
*
|
||||
* @param other the potential sub-interval
|
||||
*/
|
||||
public boolean contains(Interval other) {
|
||||
return from - other.from < ZERO_TOLERANCE && other.to - to < ZERO_TOLERANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string representation of this interval.
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[" + from + "; " + to + "]";
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the specified interval is almost equal to this
|
||||
* interval up to the specified epsilon value.
|
||||
*
|
||||
* @param other the other interval to check
|
||||
* @param eps the allowed epsilon value
|
||||
*/
|
||||
public boolean matches(Interval other, float eps) {
|
||||
return abs(from - other.from) < eps &&
|
||||
abs(to - other.to) < eps;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user