@turbox3d/math
Version:
Large-scale graphics application math library
145 lines (144 loc) • 4.19 kB
TypeScript
export declare class Interval {
static invalid(): Interval;
/**
* interval mul by number
* @param alpha
* @returns
*/
static mul(interval: Interval, alpha: number): Interval;
/**
* Get the intersect intervals of two list of intervals.
* @param intervals1
* @param intervals2
* @returns List<Interval>
*/
static intersect(intervals1: Interval[], intervals2: Interval[]): Interval[];
/**
* Combine the intervals.Return the list of intervals after unioned
* @param intervals
* @returns {Interval[]}
*/
static union(intervals: Interval[]): Interval[];
private _start;
private _end;
/**
* constructor
* @param start
* @param end
*/
constructor(start: number, end: number);
/**
* Get interval's start
*/
get start(): number;
/**
* Get interval's end
*/
get end(): number;
/**
* Returns true if this interval is equal to another within specified tolerance.
* @param other
* @param numericTolerance
* @return
*/
isEqual(other: Interval, numTol?: number): boolean;
/**
* Get the middle number
* @return
*/
get middle(): number;
/**
* Get the cloned object of this Interval.
*/
clone(): Interval;
/**
* Get interval's length
* @return
*/
get length(): number;
/**
* interval string
* @return
*/
toString(): string;
/**
* Indicates whether the Interval is Valid
* @return
*/
isValid(): boolean;
/**
* interval mul by number
* @param alpha
* @returns
*/
mul(alpha: number): Interval;
/**
* interval add by number
* @param alpha
* @returns
*/
add(interval: Interval): Interval;
addByNumber(alpha: number): Interval;
/**
* interval sub by Interval
* @param interval
* @returns
*/
sub(interval: Interval): Interval;
/**
* Interval interpolate
* @param alpha
* @returns
*/
interpolate(alpha: number): number;
/**
* Interval expand
* @param length
* @returns
*/
expand(length: number): Interval;
/**
* Indicates whether the given value is included in this interval.
* @param {number} point
* @param {boolean} includeEnds - Indicates whether to check the ends.
* @param {number} [tolerance] - Tolerance to check on the ends.
* @returns {boolean}
*/
contains(point: number, includeEnds: boolean, tolerance?: number): boolean;
/**
* Indicates whether the given interval is included in this interval.
* @param {Interval} interval
* @param {boolean} includeEnds - Indicates whether to check the ends.
* @param {number} [tolerance] - Tolerance to check on the ends.
* @returns {boolean}
*/
containsInterval(interval: Interval, includeEnds: boolean, tolerance?: number): boolean;
/**
* Indicates whether the given interval is intersected with this interval.
* @param {Interval} interval
* @param {boolean} includeEnds - Indicates whether to check the ends.
* @param {number} [tolerance] - Intersection tolerance.
* @returns {boolean}
*/
intersects(interval: Interval, includeEnds: boolean, tolerance?: number): boolean;
/**
* Indicates whether the given interval is intersected with this interval.
* @param {Interval} interval
* @param {boolean} includeEnds - Indicates whether to check the ends.
* @param {number} [tolerance] - Intersection tolerance.
* @returns {boolean}
*/
intersected(interval: Interval, includeEnds: boolean, tolerance?: number): boolean;
/**
* Get the intersect part with interval. If the intervals are not intersectant, we will return an invalid interval
* @param interval
* @returns {Interval} | null
*/
intersection(interval: Interval): Interval;
/**
* Combine with interval. If the intervals are not intersectant, we will return an invalid interval
* @param interval
* @returns
*/
includeInterval(interval: Interval): Interval;
}