@numericelements/knot-sequence
Version:
A library for generating and manipulating knot sequences for b-spline curves and surfaces
1,015 lines • 62.5 kB
TypeScript
/**
* Named constants for knot sequence constructor types
*/
/**
* Identifies an open knot sequence dedicated to increasing and strictly increasing sequences describing open curves.
*
* @constant {No_Knot_OpenCurve} NO_KNOT_OPEN_CURVE
* @description
* Used to specify a knot sequence where:
* - There are only two knots at positions 0 and 1
* - Both knots have multiplicity equal to maxMultiplicityOrder
* - Sequence represents minimal open curve configurations
* - Sequence represents an open curve
*
* @example
* const params = {
* type: NO_KNOT_OPEN_CURVE
* }; // produces a knot array [0,0,0,1,1,1] with maxMultiplicityOrder = 3 or [0,0,1,1] with maxMultiplicityOrder = 2
*/
export declare const NO_KNOT_OPEN_CURVE: "No_Knot_OpenCurve";
/**
* Identifies an open knot sequence dedicated to increasing and strictly increasing sequence describing closed curves.
*
* @constant {No_Knot_ClosedCurve} NO_KNOT_CLOSED_CURVE
* @description
* Used to specify a knot sequence where:
* - All knots are uniformly spaced
* - All knots have multiplicity of 1
* - Sequence starts at -(maxMultiplicityOrder-1)
* - Sequence ends at 2*maxMultiplicityOrder-1 (or 2*maxMultiplicityOrder if maxMultiplicityOrder=2)
* - Sequence represents a closed curve
*
* @example
* const params = {
* type: NO_KNOT_CLOSED_CURVE
* }; // produces a knot array [-2,-1,0,1,2,3,4] with maxMultiplicityOrder = 3 or [-1,0,1,2,3] with maxMultiplicityOrder = 2
*/
export declare const NO_KNOT_CLOSED_CURVE: "No_Knot_ClosedCurve";
/**
* Identifies a uniform open knot sequence type that can be applied to open or closed curves.
*
* @constant {Uniform_OpenKnotSequence} UNIFORM_OPENKNOTSEQUENCE
* @description
* Used to specify an open knot sequence that can be increaing or stricly increasing where:
* - All knots are uniformly spaced
* - All knots have multiplicity of 1
* - Sequence starts at -(maxMultiplicityOrder-1)
* - Sequence ends at BsplBasisSize + (maxMultiplicityOrder - 1)
* - Sequence is open (not periodic) and applicable to open or closed curves
*
* @example
* const params = {
* type: UNIFORM_OPENKNOTSEQUENCE,
* BsplBasisSize: 3
* }; // produces a knot array [-2,-1,0,1,2,3,4,5] with maxMultiplicityOrder = 3
*/
export declare const UNIFORM_OPENKNOTSEQUENCE: "Uniform_OpenKnotSequence";
/**
* Identifies an open knot sequence with uniformly spread interior knots and non uniform multiplicity of the extreme knots.
*
* @constant {UniformlySpreadInterKnots_OpenKnotSequence} UNIFORMLYSPREADINTERKNOTS_OPENKNOTSEQUENCE
* @description
* Used to specify a knot sequence where:
* - End knots have multiplicity equal to maxMultiplicityOrder
* - Interior knots are uniformly distributed and have multiplicity of 1
* - Sequence is open (not periodic),
* - The size of the B-Spline basis is provided as a parameter.
* Devoted to open curves or surfaces.
*
* @example
* const params = {
* type: UNIFORMLYSPREADINTERKNOTS_OPENKNOTSEQUENCE,
* BsplBasisSize: 5
* };
*/
export declare const UNIFORMLYSPREADINTERKNOTS_OPENKNOTSEQUENCE: "UniformlySpreadInterKnots_OpenKnotSequence";
/**
* Identifies an increasing open knot sequence type to describe open curves or surfaces.
*
* @constant {IncreasingOpenKnotSequence} INCREASINGOPENKNOTSEQUENCE
* @description
* Used to specify an increasing open knot sequence where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same location are allowed to express a knot multiplicity
* - Sequence is open (not periodic)
* - knots strictly internal to the normalized basis interval have a multiplicity up to (maxMultiplicityOrder-1)
* - The entire knot sequence is provided as an array of knots.
* The array of knot cannot contain knots strictly inside the normalized basis interval with
* a multiplicity equal to maxMultiplicityOrder to make sure that the sequence described defines a single curve/surface only.
*
* @example
* const params = {
* type: INCREASINGOPENKNOTSEQUENCE,
* knots: [0, 0, 0, 1, 2.5, 3, 3, 3], // with maxMultiplicityOrder = 3
* };
*/
export declare const INCREASINGOPENKNOTSEQUENCE: "IncreasingOpenKnotSequence";
/**
* Identifies an increasing open knot sequence type to describe open curves or surfaces and may contain internal C0 discontinuities.
*
* @constant {IncreasingOpenKnotSequenceUpToC0Discontinuity} INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY
* @description
* Used to specify an increasing open knot sequence where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same position are allowed to express a knot multiplicity
* - Knot multiplicity can reach maxMultiplicityOrder at interior knots
* - Sequence allows C0 discontinuities at interior knots of the normalized basis interval
* - Sequence is open (not periodic)
* - The entire knot sequence is provided as an array of knots.
*
* @example
* const params = {
* type: INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY,
* knots: [0,0,0,1,2,2,2,3,3,3], // with maxMultiplicityOrder = 3
* };
*
* @example
* const params = {
* type: INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY,
* knots: [-2,-1,0,1,2,2,2,3,4,5,6], // with maxMultiplicityOrder = 3
* };
*/
export declare const INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY: "IncreasingOpenKnotSequenceUpToC0Discontinuity";
/**
* Identifies an increasing open knot sequence type for closed curves or surfaces with periodic knots specified only.
*
* @constant {IncreasingOpenKnotSequenceClosedCurve} INCREASINGOPENKNOTSEQUENCECLOSEDCURVE
* @description
* Used to specify an increasing open knot sequence where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same position are allowed to express a knot multiplicity
* - Knot sequence represents a closed curve using open knot vector, periodicity constraints hold for some knots at extremities of the sequence
* - periodicity conditions constrain knot spacing at sequence extremities to contribute to curve closure
* - knot multiplicities near the extremities of the sequence are analyzed to ensure a consistent definition of a normalized basis interval
* - the array of periodic knots is provided as an array of knots and defines the normalized basis interval.
* Knots are added automatically to incorporate periodicity constraints.
* - knots strictly internal to the normalized basis interval have a multiplicity up to (maxMultiplicityOrder-1)
* - Interior knots define shape control
*
* @example
* const params = {
* type: INCREASINGOPENKNOTSEQUENCECLOSEDCURVE,
* periodicKnots: [0,1,2,2,3,4], // with maxMultiplicityOrder = 3 produces a knot array [-2,-1,0,1,2,2,3,4,5,6]
* };
*
* @example
* const params = {
* type: INCREASINGOPENKNOTSEQUENCECLOSEDCURVE,
* periodicKnots: [0,0,1.1,2,2,3,4,4], // with maxMultiplicityOrder = 3 produces a knot array [-1,0,0,1.1,2,2,3,4,4,5.1]
* };
*/
export declare const INCREASINGOPENKNOTSEQUENCECLOSEDCURVE: "IncreasingOpenKnotSequenceClosedCurve";
/**
* Identifies an increasing open knot sequence type for closed curves with all knots specified.
*
* @constant {IncreasingOpenKnotSequenceClosedCurve_allKnots} INCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS
* @description
* Used to specify an increasing open knot sequence for closed curves where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same position are allowed
* - Sequence represents a closed curve using an open knot sequence, periodicity constraints hold for some knots at extremities of the sequence
* - End conditions ensure curve closure and must be incorporated in knot sequence definition to ensure the knot sequence consistency
* - All knots including end knots are explicitly specified
* - Full control over knot placement and multiplicity
*
* @example
* const params = {
* type: INCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS,
* knots: [0, 0, 0, 1, 2, 3, 3, 3] // with maxMultiplicityOrder = 3
* };
*
* @example
* const params = {
* type: INCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS,
* knots: [-1,0,0,1.1,2,2,3,4,4,5.1], // with maxMultiplicityOrder = 3
* };
*/
export declare const INCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS: "IncreasingOpenKnotSequenceClosedCurve_allKnots";
/**
* Identifies an increasing open knot sequence type for closed curves/surface with all knots specified and possible C0 discontinuities internal to the normalized basis interval.
*
* @constant {IncreasingOpenKnotSequenceUpToC0DiscontinuityClosedCurve_allKnots} INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS
* @description
* Represents an open knot sequence type for closed curves that:
* - Knots form a non-decreasing sequence
* - Allows C0 discontinuities at strictly internal knots of the normalized basis interval (knots with maxMultiplicityOrder multiplicity)
* - End conditions ensure curve closure and must be incorporated in knot sequence definition to ensure the knot sequence consistency
* - All knots including end knots are explicitly specified
*
* This type combines the characteristics of closed curves (where the curve endpoints meet)
* while allowing C0 discontinuities (discontinuity of the closed curves)
* at internal knots (the curve can be open there).
*
* @example
* const params = {
* type: INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS,
* knots: [0, 0, 0, 1, 2, 3, 3, 3] // with maxMultiplicityOrder = 3
* };
*
* @example
* const params = {
* type: INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS,
* knots: [-1,0,0,1.1,2,2,2,3,4,4,5.1], // with maxMultiplicityOrder = 3
* };
*/
export declare const INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS: "IncreasingOpenKnotSequenceUpToC0DiscontinuityClosedCurve_allKnots";
/**
* Identifies a strictly increasing open knot sequence type that describes open curves/surfaces.
*
* @constant {StrictlyIncreasingOpenKnotSequence} STRICTLYINCREASINGOPENKNOTSEQUENCE
* @description
* Used to specify a strictly open knot sequence where:
* - Knots form a strictly increasing sequence (No repeated knot abscissa allowed)
* - Sequence is open (not periodic)
* - Full control over knot placement while maintaining strict monotonicity
* - knots strictly internal to the normalized basis interval have a multiplicity up to (maxMultiplicityOrder-1)
* - The entire knot sequence is provided as an array of knots.
* - The entire list of knot multiplicities is provided as an array of multiplicities.
*
* The array of knots cannot contain knots strictly inside the normalized basis interval with
* a multiplicity equal to maxMultiplicityOrder to make sure that the sequence described defines a single curve/surface only.
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE,
* knots: [0,1,2,3,4],
* multiplicities: [3,1,2,1,3] // with maxMultiplicityOrder = 3
* };
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE,
* knots: [-3,-2,-1,0,1,2,3,4,5,6],
* multiplicities: [1,1,1,1,1,1,1,1,1,1] // with maxMultiplicityOrder = 4
* };
*/
export declare const STRICTLYINCREASINGOPENKNOTSEQUENCE: "StrictlyIncreasingOpenKnotSequence";
/**
* Identifies a strictly increasing open knot sequence type to describe open curves/surfaces and may contain internal C0 discontinuities.
*
* @constant {StrictlyIncreasingOpenKnotSequenceUpToC0Discontinuity} STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY
* @description
* Used to specify a strictly increasing knot sequence where:
* - Knots form a strictly increasing sequence
* - Each knot must have greater abscissa value than previous
* - Knot multiplicity can reach maxMultiplicityOrder at interior knots
* - Sequence allows C0 discontinuities at interior knots of the normalized basis interval
* - Sequence is open (not periodic)
* - The entire knot sequence is provided as an array of knots.
* - The entire list of knot multiplicities is provided as an array of multiplicities.
*
* The array of knots can contain knots strictly inside the normalized basis interval with
* a multiplicity equal to maxMultiplicityOrder. The knot sequence can describe multiple disconnected curves/surfaces.
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY,
* knots: [0,1,2,3,4],
* multiplicities: [3,1,3,1,3] // with maxMultiplicityOrder = 3
* };
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY,
* knots: [-3,-2,-1,0,1,2,3,4,5,6],
* multiplicities: [1,1,1,1,4,1,1,1,1,1] // with maxMultiplicityOrder = 4
* };
*/
export declare const STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY: "StrictlyIncreasingOpenKnotSequenceUpToC0Discontinuity";
/**
* Identifies a strictly increasing open knot sequence type for closed curves or surfaces with periodic knots only.
*
* @constant {StrictlyIncreasingOpenKnotSequenceClosedCurve} STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVE
* @description
* Used to specify a knot sequence where:
* - Knots form a strictly increasing sequence
* - Each knot must have greater value than previous
* - Knot sequence represents a closed curve using open knot vector, periodicity constraints hold for some knots at extremities of the sequence
* - periodicity conditions constrain knot spacing at sequence extremities to contribute to curve closure
* - knot multiplicities near the extremities of the sequence are analyzed to ensure a consistent definition of a normalized basis interval
* - the array of periodic knots is provided as an array of knots and defines the normalized basis interval.
* Knots are added automatically to incorporate periodicity constraints.
* - The periodic knot multiplicities are provided as an array of multiplicities.
* - knots strictly internal to the normalized basis interval have a multiplicity up to (maxMultiplicityOrder-1)
* - Interior knots define shape control
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVE,
* periodicKnots: [0,1,2,3,4],
* multiplicities: [1,1,2,1,1] // with maxMultiplicityOrder = 3 produces a knot array [-2,-1,0,1,2,3,4,5,6] with multiplicities [1,1,1,1,2,1,1,1,1]
* };
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVE,
* periodicKnots: [0,0,1.1,2,2,3,4,4],
* multiplicities: [2,1,2,1,2] // with maxMultiplicityOrder = 3 produces a knot array [-1,0,0,1.1,2,2,3,4,4,5.1] with multiplicities [1,2,1,2,1,2,1]
* };
*/
export declare const STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVE: "StrictlyIncreasingOpenKnotSequenceClosedCurve";
/**
* Identifies a strictly increasing open knot sequence type for closed curves/surfaces with all knots specified and possible C0 discontinuities internal to the normalized basis interval.
*
* @constant {StrictlyIncreasingOpenKnotSequenceClosedCurve_allKnots} STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS
* @description
* Used to specify a strictly increasing knot sequence type for closed curves where:
* - Knots form a strictly increasing sequence
* - Each knot must have greater value than previous
* - Sequence represents a closed curve using an open knot sequence, periodicity constraints hold for some knots at extremities of the sequence
* - End conditions ensure curve closure and must be incorporated in knot sequence definition to ensure the knot sequence consistency
* - All knots including end knots are explicitly specified
* - Full control over knot placement and multiplicity
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS,
* knots: [0,1,2,3],
* multiplicities: [3,1,1,3] // with maxMultiplicityOrder = 3
* };
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS,
* knots: [-1,0,1.1,2,3,4,5.1],
* multiplicities: [1,2,1,2,1,2,1] // with maxMultiplicityOrder = 3
* };
*/
export declare const STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS: "StrictlyIncreasingOpenKnotSequenceClosedCurve_allKnots";
/**
* Identifies a strictly increasing open knot sequence type for closed curves/surfaces with all knots specified and possible C0 discontinuities internal to the normalized basis interval.
*
* @constant {StrictlyIncreasingOpenKnotSequenceUpToC0DiscontinuityClosedCurve_allKnots} STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS
* @description
* Used to specify a strictly increasing knot sequence type for closed curves where:
* - Knots form a strictly increasing sequence
* - Each knot must have greater value than previous
* - Sequence represents a closed curve using an open knot sequence, periodicity constraints hold for some knots at extremities of the sequence
* - End conditions ensure curve closure and must be incorporated in knot sequence definition to ensure the knot sequence consistency
* - All knots including end knots are explicitly specified
* - Full control over knot placement and multiplicity
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS,
* knots: [0,1,2,3],
* multiplicities: [3,1,3,3] // with maxMultiplicityOrder = 3
* };
*
* @example
* const params = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS,
* knots: [-1,0,1.1,2,3,4,5.1],
* multiplicities: [1,2,1,2,1,2,1] // with maxMultiplicityOrder = 3
* };
*/
export declare const STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS: "StrictlyIncreasingOpenKnotSequenceUpToC0DiscontinuityClosedCurve_allKnots";
/**
* Identifies a periodic knot sequence dedicated to increasing and strictly increasing sequences describing closed curves.
*
* @constant {No_Knot_PeriodicCurve} NO_KNOT_PERIODIC_CURVE
* @description
* Used to specify a periodic knot sequence where:
* - Knots abscissa are spread with uniform spacing across the normalized basis interval
* - Knot multiplicity is uniformly set to 1
* - Knot sequence length equals (maxMultiplicityOrder+1)
* - Sequence represents minimal closed curve configurations
* - Sequence represents a closed curve
*
* @example
* const params = {
* type: NO_KNOT_PERIODIC_CURVE
* }; // produces a knot array [0,1,2,3] with maxMultiplicityOrder = 3 where the knot array corresponds to the periodic knots
*
* @example
* const params = {
* type: NO_KNOT_PERIODIC_CURVE
* }; // produces a knot array [0,1,2] with maxMultiplicityOrder = 1. A particular case of a periodic knot sequence to describe the smallest closed curve configuration for a linear B-Spline
*/
export declare const NO_KNOT_PERIODIC_CURVE: "No_Knot_PeriodicCurve";
/**
* Identifies a uniform periodic knot sequence type that can be applied to closed curves. The knot sequence is of increasing type.
*
* @constant {Uniform_PeriodicKnotSequence} UNIFORM_PERIODICKNOTSEQUENCE
* @description
* Used to specify an periodic knot sequence that is increaing where:
* - All knots are uniformly spaced
* - All knots have multiplicity of 1
* - Sequence starts at KNOT_SEQUENCE_ORIGIN
* - Sequence ends at abscissa BsplBasisSize
* - Sequence is periodic and applicable to closed curves
* - BsplBasisSize must equal or greater than (maxMultiplicityOrder+1)
*
* @example
* const params = {
* type: UNIFORM_PERIODICKNOTSEQUENCE,
* BsplBasisSize: 3
* }; // produces a knot array [0,1,2,3,4,5] with maxMultiplicityOrder = 3
*/
export declare const UNIFORM_PERIODICKNOTSEQUENCE: "Uniform_PeriodicKnotSequence";
/**
* Identifies an increasing periodic knot sequence type to describe closed curves or surfaces.
*
* @constant {IncreasingPeriodicKnotSequence} INCREASINGPERIODICKNOTSEQUENCE
* @description
* Used to specify an increasing periodic knot sequence where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same location are allowed to express a knot multiplicity
* - Sequence is periodic
* - knots strictly internal to the normalized basis interval have a multiplicity up to maxMultiplicityOrder
* - The entire knot sequence is provided as an array of knots.
* The normalized basis spans the interval [KNOT_SEQUENCE_ORIGIN, last knot abscissa]
*
* @example
* const params = {
* type: INCREASINGPERIODICKNOTSEQUENCE,
* periodicKnots: [0,0,0,1,2.5,3,3,3], // with maxMultiplicityOrder = 3
* };
*
* @example
* const params = {
* type: INCREASINGPERIODICKNOTSEQUENCE,
* periodicKnots: [0,1,1,1,2.5,3], // with maxMultiplicityOrder = 3
* };
*/
export declare const INCREASINGPERIODICKNOTSEQUENCE: "IncreasingPeriodicKnotSequence";
/**
* Identifies a strictly increasing periodic knot sequence type that describes closed curves/surfaces.
*
* @constant {StrictIncreasingPeriodicKnotSequence} STRICTLYINCREASINGPERIODICKNOTSEQUENCE
* @description
* Used to specify a strictly periodic knot sequence where:
* - Knots form a strictly increasing sequence (No repeated knot abscissa allowed)
* - Sequence is periodic
* - Full control over knot placement while maintaining strict monotonicity
* - knots have a multiplicity up to maxMultiplicityOrder
* - The entire knot sequence is provided as an array of knots.
* - The entire list of knot multiplicities is provided as an array of multiplicities.
* The normalized basis spans the interval [KNOT_SEQUENCE_ORIGIN, last knot abscissa]
*
* @example
* const params = {
* type: STRICTLYINCREASINGPERIODICKNOTSEQUENCE,
* periodicKnots: [0,1,2,3,4],
* multiplicities: [3,1,2,1,3] // with maxMultiplicityOrder = 3
* };
*
* @example
* const params = {
* type: STRICTLYINCREASINGPERIODICKNOTSEQUENCE,
* periodicKnots: [0,1,2,3,4,5,6],
* multiplicities: [1,1,1,1,1,1,1] // with maxMultiplicityOrder = 4
* };
*/
export declare const STRICTLYINCREASINGPERIODICKNOTSEQUENCE: "StrictIncreasingPeriodicKnotSequence";
/**
* Interface for defining an open knot sequence for open curves with minimal number of parameters.
*
* @interface OpenKnotSequenceOpenCurve
* @description
* Represents the simplest configuration for an open knot sequence where:
* - Only two knots are used (at abscissae 0 and 1)
* - Both knots have multiplicity equal to maxMultiplicityOrder
* - Sequence represents minimal open curve configurations
* - Sequence represents an open curve
*
* @property {typeof NO_KNOT_OPEN_CURVE} type - Must be set to NO_KNOT_OPEN_CURVE constant
*/
export interface OpenKnotSequenceOpenCurve {
type: typeof NO_KNOT_OPEN_CURVE;
}
/**
* Interface for defining an open knot sequence for closed curves with minimal number of parameters.
*
* @interface OpenKnotSequenceClosedCurve
* @description
* Represents the simplest configuration for an open knot sequence where:
* - All knots are uniformly spaced
* - All knots have multiplicity of 1
* - Sequence starts at -(maxMultiplicityOrder-1)
* - Sequence ends at 2*maxMultiplicityOrder-1 (or 2*maxMultiplicityOrder if maxMultiplicityOrder=2)
* - Sequence represents a closed curve
*
* @property {typeof NO_KNOT_CLOSED_CURVE} type - Must be set to NO_KNOT_CLOSED_CURVE constant
*/
export interface OpenKnotSequenceClosedCurve {
type: typeof NO_KNOT_CLOSED_CURVE;
}
/**
* Interface for defining a uniform open knot sequence that can be applied to open or closed curves.
*
* @interface Uniform_OpenKnotSequence
* @description
* Represents a uniform open knot sequence where:
* - All knots are uniformly spaced
* - All knots have multiplicity of 1
* - Sequence starts at -(maxMultiplicityOrder-1)
* - Sequence ends at BsplBasisSize + (maxMultiplicityOrder - 1)
* - Sequence is open (not periodic) and applicable to open or closed curves
*
* @property {typeof UNIFORM_OPENKNOTSEQUENCE} type - Must be set to UNIFORM_OPENKNOTSEQUENCE constant
* @property {number} BsplBasisSize - Size of the B-spline basis, must be greater than maxMultiplicityOrder
*/
export interface Uniform_OpenKnotSequence {
type: typeof UNIFORM_OPENKNOTSEQUENCE;
BsplBasisSize: number;
}
/**
* Interface for defining an open knot sequence with uniformly spread interior knots and non uniform multiplicity of the extreme knots.
*
* @interface UniformlySpreadInterKnots_OpenKnotSequence
* @description
* Represents an open knot sequence where:
* - End knots have multiplicity equal to maxMultiplicityOrder
* - Interior knots are uniformly distributed and have multiplicity of 1
* - Sequence is open (not periodic)
* - The size of the B-Spline basis is provided as a parameter
* - Devoted to open curves or surfaces
*
* @property {typeof UNIFORMLYSPREADINTERKNOTS_OPENKNOTSEQUENCE} type - Must be set to UNIFORMLYSPREADINTERKNOTS_OPENKNOTSEQUENCE constant
* @property {number} BsplBasisSize - Size of the B-spline basis, must be greater than maxMultiplicityOrder
*/
export interface UniformlySpreadInterKnots_OpenKnotSequence {
type: typeof UNIFORMLYSPREADINTERKNOTS_OPENKNOTSEQUENCE;
BsplBasisSize: number;
}
/**
* Interface for defining an increasing open knot sequence type that describes open curves or surfaces.
*
* @interface IncreasingOpenKnotSequence
* @description
* Represents an increasing open knot sequence where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same location are allowed to express a knot multiplicity
* - Sequence is open (not periodic)
* - knots strictly internal to the normalized basis interval have a multiplicity up to (maxMultiplicityOrder-1)
* - The entire knot sequence is provided as an array of knots
*
* The array of knots cannot contain knots strictly inside the normalized basis interval with
* a multiplicity equal to maxMultiplicityOrder to make sure that the sequence described defines a single curve/surface only.
*
* @property {typeof INCREASINGOPENKNOTSEQUENCE} type - Must be set to INCREASINGOPENKNOTSEQUENCE constant
* @property {number[]} knots - Array of knot values in non-decreasing order
*/
export interface IncreasingOpenKnotSequence {
type: typeof INCREASINGOPENKNOTSEQUENCE;
knots: number[];
}
/**
* Interface for defining an increasing open knot sequence type that describes open curves/surfaces and may contain internal C0 discontinuities.
*
* @interface IncreasingOpenKnotSequenceUpToC0Discontinuity
* @description
* Represents an increasing open knot sequence where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same position are allowed to express a knot multiplicity
* - Knot multiplicity can reach maxMultiplicityOrder at interior knots
* - Sequence allows C0 discontinuities at interior knots of the normalized basis interval
* - Sequence is open (not periodic)
* - The entire knot sequence is provided as an array of knots
*
* The array of knots can contain knots strictly inside the normalized basis interval with
* a multiplicity equal to maxMultiplicityOrder. The knot sequence can describe multiple disconnected curves/surfaces.
*
* @property {typeof INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY} type - Must be set to INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY constant
* @property {number[]} knots - Array of knot values in non-decreasing order
*/
export interface IncreasingOpenKnotSequenceUpToC0Discontinuity {
type: typeof INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY;
knots: number[];
}
/**
* Interface for defining an increasing open knot sequence type for closed curves with periodic knots specified only.
*
* @interface IncreasingOpenKnotSequenceCCurve
* @description
* Represents an increasing open knot sequence where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same position are allowed to express a knot multiplicity
* - Knot sequence represents a closed curve using open knot vector
* - Periodicity constraints hold for knots at sequence extremities
* - Knot multiplicities near extremities ensure consistent normalized basis interval
* - Only periodic knots defining the normalized basis interval are provided
* - Additional knots are automatically added to satisfy periodicity constraints
* - Interior knots strictly within normalized basis interval have multiplicity up to (maxMultiplicityOrder-1)
*
* @property {typeof INCREASINGOPENKNOTSEQUENCECLOSEDCURVE} type - Must be set to INCREASINGOPENKNOTSEQUENCECLOSEDCURVE constant
* @property {number[]} periodicKnots - Array of periodic knot values in non-decreasing order that define the normalized basis interval
*/
export interface IncreasingOpenKnotSequenceCCurve {
type: typeof INCREASINGOPENKNOTSEQUENCECLOSEDCURVE;
periodicKnots: number[];
}
/**
* Interface for defining an increasing open knot sequence type for closed curves with all knots specified.
*
* @interface IncreasingOpenKnotSequenceCCurve_allKnots
* @description
* Represents an increasing open knot sequence where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same position are allowed to express a knot multiplicity
* - Sequence represents a closed curve using open knot vector
* - End conditions ensure curve closure and must be incorporated in knot sequence definition
* - All knots including end knots are explicitly specified
* - Full control over knot placement and multiplicity
* - Interior knots define shape control
*
* @property {typeof INCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS} type - Must be set to INCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS constant
* @property {number[]} knots - Array of all knot values in non-decreasing order, including end knots
*/
export interface IncreasingOpenKnotSequenceCCurve_allKnots {
type: typeof INCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS;
knots: number[];
}
/**
* Interface for defining an increasing open knot sequence type for closed curves with all knots specified and possible C0 discontinuities.
*
* @interface IncreasingOpenKnotSequenceUpToC0DiscontinuityCCurve_allKnots
* @description
* Represents an increasing open knot sequence where:
* - Knots form a non-decreasing sequence
* - Multiple knots at same position are allowed to express a knot multiplicity
* - Sequence represents a closed curve using open knot vector
* - End conditions ensure curve closure and must be incorporated in knot sequence definition
* - All knots including end knots are explicitly specified
* - Full control over knot placement and multiplicity
* - Allows C0 discontinuities at interior knots (knots with maxMultiplicityOrder multiplicity)
* - Interior knots define shape control and potential discontinuity locations
*
* @property {typeof INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS} type - Must be set to INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS constant
* @property {number[]} knots - Array of all knot values in non-decreasing order, including end knots
*/
export interface IncreasingOpenKnotSequenceUpToC0DiscontinuityCCurve_allKnots {
type: typeof INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS;
knots: number[];
}
/**
* Interface for defining a strictly increasing open knot sequence type that describes open curves/surfaces.
*
* @interface StrictlyIncreasingOpenKnotSequence
* @description
* Represents a strictly increasing open knot sequence where:
* - Knots form a strictly increasing sequence (No repeated knot abscissa allowed)
* - Sequence is open (not periodic)
* - Full control over knot placement while maintaining strict monotonicity
* - knots strictly internal to the normalized basis interval have a multiplicity up to (maxMultiplicityOrder-1)
* - The entire knot sequence is provided as an array of knots
* - The entire list of knot multiplicities is provided as an array of multiplicities
*
* The array of knots cannot contain knots strictly inside the normalized basis interval with
* a multiplicity equal to maxMultiplicityOrder to make sure that the sequence described defines a single curve/surface only.
*
* @property {typeof STRICTLYINCREASINGOPENKNOTSEQUENCE} type - Must be set to STRICTLYINCREASINGOPENKNOTSEQUENCE constant
* @property {number[]} knots - Array of strictly increasing knot abscissae
* @property {number[]} multiplicities - Array of multiplicity values for each knot
*/
export interface StrictlyIncreasingOpenKnotSequence {
type: typeof STRICTLYINCREASINGOPENKNOTSEQUENCE;
knots: number[];
multiplicities: number[];
}
/**
* Interface for defining a strictly increasing open knot sequence type that describes open curves/surfaces and may contain internal C0 discontinuities.
*
* @interface StrictlyIncreasingOpenKnotSequenceUpToC0Discontinuity
* @description
* Represents a strictly increasing knot sequence where:
* - Knots form a strictly increasing sequence
* - Each knot must have greater abscissa value than previous
* - Knot multiplicity can reach maxMultiplicityOrder at interior knots
* - Sequence allows C0 discontinuities at interior knots of the normalized basis interval
* - Sequence is open (not periodic)
* - The entire knot sequence is provided as an array of knots
* - The entire list of knot multiplicities is provided as an array of multiplicities
*
* The array of knots can contain knots strictly inside the normalized basis interval with
* a multiplicity equal to maxMultiplicityOrder. The knot sequence can describe multiple disconnected curves/surfaces.
*
* @property {typeof STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY} type - Must be set to STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY constant
* @property {number[]} knots - Array of strictly increasing knot abscissae
* @property {number[]} multiplicities - Array of multiplicity values for each knot
*/
export interface StrictlyIncreasingOpenKnotSequenceUpToC0Discontinuity {
type: typeof STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY;
knots: number[];
multiplicities: number[];
}
/**
* Interface for defining a strictly increasing open knot sequence type for closed curves with periodic knots only.
*
* @interface StrictlyIncreasingOpenKnotSequenceCCurve
* @description
* Represents a strictly increasing open knot sequence where:
* - Knots form a strictly increasing sequence
* - Each knot must have greater value than previous
* - Knot sequence represents a closed curve using open knot sequence
* - Periodicity constraints hold for knots at sequence extremities
* - Knot multiplicities near extremities ensure consistent normalized basis interval
* - Only periodic knots defining the normalized basis interval are provided
* - Additional knots are automatically added to satisfy periodicity constraints
* - Interior knots strictly within normalized basis interval have multiplicity up to (maxMultiplicityOrder-1)
*
* @property {typeof STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVE} type - Must be set to STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVE constant
* @property {number[]} periodicKnots - Array of strictly increasing periodic knot abscissae that define the normalized basis interval
* @property {number[]} multiplicities - Array of multiplicity values for each periodic knot
*/
export interface StrictlyIncreasingOpenKnotSequenceCCurve {
type: typeof STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVE;
periodicKnots: number[];
multiplicities: number[];
}
/**
* Interface for defining a strictly increasing open knot sequence type for closed curves with all knots specified.
*
* @interface StrictlyIncreasingOpenKnotSequenceCCurvee_allKnots
* @description
* Represents a strictly increasing open knot sequence where:
* - Knots form a strictly increasing sequence
* - Each knot must have greater value than previous
* - Sequence represents a closed curve using open knot sequence
* - End conditions ensure curve closure and must be incorporated in knot sequence definition
* - All knots including end knots are explicitly specified
* - Full control over knot placement and multiplicity
* - Interior knots define shape control
*
* @property {typeof STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS} type - Must be set to STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS constant
* @property {number[]} knots - Array of strictly increasing knot abscissae, including end knots
* @property {number[]} multiplicities - Array of multiplicity values for each knot
*/
export interface StrictlyIncreasingOpenKnotSequenceCCurvee_allKnots {
type: typeof STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVEALLKNOTS;
knots: number[];
multiplicities: number[];
}
/**
* Interface for defining a strictly increasing open knot sequence type for closed curves with all knots specified and possible C0 discontinuities.
*
* @interface StrictlyIncreasingOpenKnotSequenceUpToC0DiscontinuityCCurvee_allKnots
* @description
* Represents a strictly increasing open knot sequence where:
* - Knots form a strictly increasing sequence
* - Each knot must have greater value than previous
* - Sequence represents a closed curve using open knot sequence
* - End conditions ensure curve closure and must be incorporated in knot sequence definition
* - All knots including end knots are explicitly specified
* - Full control over knot placement and multiplicity
* - Allows C0 discontinuities at interior knots (knots with maxMultiplicityOrder multiplicity)
* - Interior knots define shape control and potential discontinuity locations
*
* @property {typeof STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS} type - Must be set to STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS constant
* @property {number[]} knots - Array of strictly increasing knot abscissae, including end knots
* @property {number[]} multiplicities - Array of multiplicity values for each knot
*/
export interface StrictlyIncreasingOpenKnotSequenceUpToC0DiscontinuityCCurvee_allKnots {
type: typeof STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS;
knots: number[];
multiplicities: number[];
}
/**
* Type representing simple open knot sequence configurations for closed curves.
*
* @type {BasicOpenKnotSequenceClosedCurve_type}
* @description
* Represents the union of two basic knot sequence types for closed curves:
* - OpenKnotSequenceClosedCurve: Minimal configuration with uniformly spaced knots and multiplicity 1
* - Uniform_OpenKnotSequence: Uniform open knot sequence with configurable B-spline basis size
*
* Both types maintain:
* - Open knot sequence structure
* - Uniform knot spacing
* - Support for closed curve representation
* - Consistent end conditions for curve closure
*/
export type BasicOpenKnotSequenceClosedCurve_type = OpenKnotSequenceClosedCurve | Uniform_OpenKnotSequence;
/**
* Type representing simple open knot sequence configurations for open curves.
*
* @type {BasicOpenKnotSequenceOpenCurve_type}
* @description
* Represents the union of three basic knot sequence types for open curves:
* - OpenKnotSequenceOpenCurve: Minimal configuration with two knots at 0 and 1 with maxMultiplicityOrder
* - Uniform_OpenKnotSequence: Uniform open knot sequence with configurable B-spline basis size
* - UniformlySpreadInterKnots_OpenKnotSequence: Open knot sequence with uniform interior knots and maxMultiplicityOrder at ends
*
* All types maintain:
* - Open knot sequence structure
* - Support for open curve representation
* - Consistent end conditions
* - Various levels of shape control through knot placement
*/
export type BasicOpenKnotSequenceOpenCurve_type = OpenKnotSequenceOpenCurve | Uniform_OpenKnotSequence | UniformlySpreadInterKnots_OpenKnotSequence;
/**
* Type representing all possible increasing open knot sequence configurations for open curves.
*
* @type {IncreasingOpenKnotSequenceOpenCurve_type}
* @description
* Represents the union of these knot sequence types for open curves:
* - BasicOpenKnotSequenceOpenCurve_type: Basic configurations including minimal and uniform sequences
* - IncreasingOpenKnotSequence: Non-decreasing sequence with controlled multiplicity
* - IncreasingOpenKnotSequenceUpToC0Discontinuity: Non-decreasing sequence allowing C0 discontinuities
*
* All types maintain:
* - Open knot sequence structure (not periodic)
* - Non-decreasing knot values
* - Support for open curve representation
* - Various levels of continuity control through knot multiplicity
* - Different degrees of shape control through knot placement and multiplicity
*
* @example
* // Basic minimal configuration
* const minimal: IncreasingOpenKnotSequenceOpenCurve_type = {
* type: NO_KNOT_OPEN_CURVE
* };
*
* @example
* // Increasing sequence with controlled multiplicity
* const increasing: IncreasingOpenKnotSequenceOpenCurve_type = {
* type: INCREASINGOPENKNOTSEQUENCE,
* knots: [0,0,0,1,2.5,3,3,3]
* };
*
* @example
* // Sequence with potential C0 discontinuities
* const withC0Discontinuities: IncreasingOpenKnotSequenceOpenCurve_type = {
* type: INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY,
* knots: [0,0,0,1,2,2,2,3,3,3]
* };
*/
export type IncreasingOpenKnotSequenceOpenCurve_type = BasicOpenKnotSequenceOpenCurve_type | IncreasingOpenKnotSequence | IncreasingOpenKnotSequenceUpToC0Discontinuity;
/**
* Type representing all possible increasing open knot sequence configurations for closed curves.
*
* @type {IncreasingOpenKnotSequenceClosedCurve_type}
* @description
* Represents the union of these knot sequence types for closed curves:
* - BasicOpenKnotSequenceClosedCurve_type: Basic configurations including minimal and uniform sequences
* - IncreasingOpenKnotSequenceCCurve: Non-decreasing sequence with periodic knots only
* - IncreasingOpenKnotSequenceUpToC0DiscontinuityCCurve_allKnots: Full knot sequence, possibly with C0 discontinuitie at internal knots
* - IncreasingOpenKnotSequenceCCurve_allKnots: Full knot sequence without C0 discontinuities
*
* All types maintain:
* - Open knot sequence structure used to represent closed curves
* - Non-decreasing knot values
* - Support for closed curve representation through periodicity conditions
* - Various levels of continuity control through knot multiplicity
* - Different degrees of shape control through knot placement
*
* @example
* // Basic minimal configuration
* const minimal: IncreasingOpenKnotSequenceClosedCurve_type = {
* type: NO_KNOT_CLOSED_CURVE
* };
*
* @example
* // Increasing sequence with periodic knots only
* const periodicOnly: IncreasingOpenKnotSequenceClosedCurve_type = {
* type: INCREASINGOPENKNOTSEQUENCECLOSEDCURVE,
* periodicKnots: [0,1,2,2,3,4]
* };
*
* @example
* // Full sequence with potential C0 discontinuities
* const withDiscontinuities: IncreasingOpenKnotSequenceClosedCurve_type = {
* type: INCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS,
* knots: [-1,0,0,1.1,2,2,2,3,4,4,5.1]
* };
*/
export type IncreasingOpenKnotSequenceClosedCurve_type = BasicOpenKnotSequenceClosedCurve_type | IncreasingOpenKnotSequenceCCurve | IncreasingOpenKnotSequenceUpToC0DiscontinuityCCurve_allKnots | IncreasingOpenKnotSequenceCCurve_allKnots;
/**
* Type representing all possible strictly increasing open knot sequence configurations for open curves.
*
* @type {StrictlyIncreasingOpenKnotSequenceOpenCurve_type}
* @description
* Represents the union of these knot sequence types for open curves:
* - BasicOpenKnotSequenceOpenCurve_type: Basic configurations including minimal and uniform sequences
* - StrictlyIncreasingOpenKnotSequence: Strictly increasing sequence with controlled multiplicity
* - StrictlyIncreasingOpenKnotSequenceUpToC0Discontinuity: Strictly increasing sequence allowing C0 discontinuities at internal knots
*
* All types maintain:
* - Open knot sequence structure (not periodic)
* - Strictly increasing knot values (no repeated abscissae)
* - Support for open curve representation
* - Various levels of continuity control through knot multiplicity
* - Different degrees of shape control through knot placement and multiplicity
*
* @example
* // Basic minimal configuration
* const minimal: StrictlyIncreasingOpenKnotSequenceOpenCurve_type = {
* type: NO_KNOT_OPEN_CURVE
* };
*
* @example
* // Strictly increasing sequence with controlled multiplicity
* const increasing: StrictlyIncreasingOpenKnotSequenceOpenCurve_type = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE,
* knots: [0,1,2,3,4],
* multiplicities: [3,1,2,1,3]
* };
*
* @example
* // Sequence with potential C0 discontinuities
* const withC0Discontinuities: StrictlyIncreasingOpenKnotSequenceOpenCurve_type = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY,
* knots: [0,1,2,3,4],
* multiplicities: [3,1,3,1,3]
* };
*/
export type StrictlyIncreasingOpenKnotSequenceOpenCurve_type = BasicOpenKnotSequenceOpenCurve_type | StrictlyIncreasingOpenKnotSequence | StrictlyIncreasingOpenKnotSequenceUpToC0Discontinuity;
/**
* Type representing all possible strictly increasing open knot sequence configurations for closed curves.
*
* @type {StrictlyIncreasingOpenKnotSequenceClosedCurve_type}
* @description
* Represents the union of these knot sequence types for closed curves:
* - BasicOpenKnotSequenceClosedCurve_type: Basic configurations including minimal and uniform sequences
* - StrictlyIncreasingOpenKnotSequenceCCurve: Strictly increasing sequence with periodic knots only
* - StrictlyIncreasingOpenKnotSequenceCCurvee_allKnots: Full knot sequence without C0 discontinuities
* - StrictlyIncreasingOpenKnotSequenceUpToC0DiscontinuityCCurvee_allKnots: Full sequence allowing C0 discontinuities at internal knots
*
* All types maintain:
* - Open knot sequence structure used to represent closed curves
* - Strictly increasing knot values (no repeated abscissae)
* - Support for closed curve representation through periodicity conditions
* - Various levels of continuity control through knot multiplicity
* - Different degrees of shape control through knot placement
*
* @example
* // Basic minimal configuration
* const minimal: StrictlyIncreasingOpenKnotSequenceClosedCurve_type = {
* type: NO_KNOT_CLOSED_CURVE
* };
*
* @example
* // Strictly increasing sequence with periodic knots only
* const periodicOnly: StrictlyIncreasingOpenKnotSequenceClosedCurve_type = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVE,
* periodicKnots: [0,1,2,3,4],
* multiplicities: [1,1,2,1,1]
* };
*
* @example
* // Full sequence with potential C0 discontinuities
* const withDiscontinuities: StrictlyIncreasingOpenKnotSequenceClosedCurve_type = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE_UPTOC0DISCONTINUITY_CLOSEDCURVEALLKNOTS,
* knots: [-1,0,1.1,2,3,4,5.1],
* multiplicities: [1,2,1,3,1,2,1]
* };
*/
export type StrictlyIncreasingOpenKnotSequenceClosedCurve_type = BasicOpenKnotSequenceClosedCurve_type | StrictlyIncreasingOpenKnotSequenceCCurve | StrictlyIncreasingOpenKnotSequenceCCurvee_allKnots | StrictlyIncreasingOpenKnotSequenceUpToC0DiscontinuityCCurvee_allKnots;
/**
* Type representing all possible increasing open knot sequence configurations for both open and closed curves.
*
* @type {AbstractIncreasingOpenKnotSequence_type}
* @description
* Represents the union of increasing open knot sequence types for both open and closed curves:
* - IncreasingOpenKnotSequenceOpenCurve_type: All increasing sequences for open curves
* - IncreasingOpenKnotSequenceClosedCurve_type: All increasing sequences for closed curves
*
* All types maintain:
* - Open knot sequence structure
* - Non-decreasing knot values
* - Support for both open and closed curve representations
* - Various levels of continuity control through knot multiplicity
* - Different degrees of shape control through knot placement
*
* This type serves as an abstraction layer that unifies the handling of increasing
* open knot sequences regardless of whether they describe open or closed curves.
*
* @example
* // For open curve
* const openCurve: AbstractIncreasingOpenKnotSequence_type = {
* type: INCREASINGOPENKNOTSEQUENCE,
* knots: [0,0,0,1,2.5,3,3,3]
* };
*
* @example
* // For closed curve
* const closedCurve: AbstractIncreasingOpenKnotSequence_type = {
* type: INCREASINGOPENKNOTSEQUENCECLOSEDCURVE,
* periodicKnots: [0,1,2,2,3,4]
* };
*/
export type AbstractIncreasingOpenKnotSequence_type = IncreasingOpenKnotSequenceOpenCurve_type | IncreasingOpenKnotSequenceClosedCurve_type;
/**
* Type representing all possible strictly increasing open knot sequence configurations for both open and closed curves.
*
* @type {AbstractStrictlyIncreasingOpenKnotSequence_type}
* @description
* Represents the union of strictly increasing open knot sequence types for both open and closed curves:
* - StrictlyIncreasingOpenKnotSequenceOpenCurve_type: All strictly increasing sequences for open curves
* - StrictlyIncreasingOpenKnotSequenceClosedCurve_type: All strictly increasing sequences for closed curves
*
* All types maintain:
* - Open knot sequence structure
* - Strictly increasing knot values (no repeated abscissae)
* - Support for both open and closed curve representations
* - Various levels of continuity control through knot multiplicity
* - Different degrees of shape control through knot placement
*
* This type serves as an abstraction layer that unifies the handling of strictly increasing
* open knot sequences regardless of whether they describe open or closed curves.
*
* @example
* // For open curve
* const openCurve: AbstractStrictlyIncreasingOpenKnotSequence_type = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCE,
* knots: [0,1,2,3,4],
* multiplicities: [3,1,2,1,3]
* };
*
* @example
* // For closed curve
* const closedCurve: AbstractStrictlyIncreasingOpenKnotSequence_type = {
* type: STRICTLYINCREASINGOPENKNOTSEQUENCECLOSEDCURVE,
* periodicKnots: [