import {
	Vector3,
	Vector4
} from '../../../src/Three';

export namespace NURBSUtils {

	export function findSpan( p: number, u: number, U: number[] ): number;
	export function calcBasisFunctions( span: number, u: number, p: number, U: number[] ): number[];
	export function calcBSplinePoint( p: number, U: number[], P: Vector4[], u: number ): Vector4;
	export function calcBasisFunctionDerivatives( span: number, u: number, p: number, n: number, U: number[] ): number[][];
	export function calcBSplineDerivatives( p: number, U: number[], P: Vector4[], u: number, nd: number ): Vector4[];
	export function calcKoverI( k: number, i: number ): number;
	export function calcRationalCurveDerivatives( Pders: Vector4[] ): Vector3[];
	export function calcNURBSDerivatives( p: number, U: number[], P: Vector4[], u: number, nd: number ): Vector3[];
	export function calcSurfacePoint( p: number, q: number, U: number[], V: number[], P: Vector4[], u: number, v: number, target: Vector3 ): Vector3;

}
