// Generated by scripts/generate.mjs from bindings/api.mjs. Do not edit.
///|
#external
pub type NURBSUtils
///|
#module("@mizchi/three-mbt/parametric")
pub extern "js" fn NURBSUtils::NURBSUtils() -> NURBSUtils = "nURBSUtils"
///|
extern "js" fn NURBSUtils::ffi_find_span(
self : NURBSUtils,
degree : Int,
u : Double,
knots : FixedArray[Double],
) -> JsResult[Int] =
#| (self, degree, u, knots) => { try { return { ok: true, value: (() => self.findSpan(degree, u, knots))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::find_span(
self : NURBSUtils,
degree : Int,
u : Double,
knots : FixedArray[Double],
) -> Int raise ModelingError {
match self.ffi_find_span(degree, u, knots).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn NURBSUtils::ffi_basis_functions(
self : NURBSUtils,
span : Int,
u : Double,
degree : Int,
knots : FixedArray[Double],
) -> JsResult[FixedArray[Double]] =
#| (self, span, u, degree, knots) => { try { return { ok: true, value: (() => self.calcBasisFunctions(span, u, degree, knots))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::basis_functions(
self : NURBSUtils,
span : Int,
u : Double,
degree : Int,
knots : FixedArray[Double],
) -> FixedArray[Double] raise ModelingError {
match self.ffi_basis_functions(span, u, degree, knots).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn NURBSUtils::ffi_basis_derivatives(
self : NURBSUtils,
span : Int,
u : Double,
degree : Int,
order : Int,
knots : FixedArray[Double],
) -> JsResult[FixedArray[FixedArray[Double]]] =
#| (self, span, u, degree, order, knots) => { try { return { ok: true, value: (() => self.calcBasisFunctionDerivatives(span, u, degree, order, knots))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::basis_derivatives(
self : NURBSUtils,
span : Int,
u : Double,
degree : Int,
order : Int,
knots : FixedArray[Double],
) -> FixedArray[FixedArray[Double]] raise ModelingError {
match
self.ffi_basis_derivatives(span, u, degree, order, knots).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn NURBSUtils::ffi_bspline_point(
self : NURBSUtils,
degree : Int,
knots : FixedArray[Double],
points : FixedArray[Vector4],
u : Double,
) -> JsResult[Vector4] =
#| (self, degree, knots, points, u) => { try { return { ok: true, value: (() => self.calcBSplinePoint(degree, knots, points, u))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::bspline_point(
self : NURBSUtils,
degree : Int,
knots : FixedArray[Double],
points : FixedArray[Vector4],
u : Double,
) -> Vector4 raise ModelingError {
match self.ffi_bspline_point(degree, knots, points, u).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn NURBSUtils::ffi_bspline_derivatives(
self : NURBSUtils,
degree : Int,
knots : FixedArray[Double],
points : FixedArray[Vector4],
u : Double,
order : Int,
) -> JsResult[FixedArray[Vector4]] =
#| (self, degree, knots, points, u, order) => { try { return { ok: true, value: (() => self.calcBSplineDerivatives(degree, knots, points, u, order))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::bspline_derivatives(
self : NURBSUtils,
degree : Int,
knots : FixedArray[Double],
points : FixedArray[Vector4],
u : Double,
order : Int,
) -> FixedArray[Vector4] raise ModelingError {
match
self.ffi_bspline_derivatives(degree, knots, points, u, order).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn NURBSUtils::ffi_curve_derivatives(
self : NURBSUtils,
degree : Int,
knots : FixedArray[Double],
points : FixedArray[Vector4],
u : Double,
order : Int,
) -> JsResult[FixedArray[Vector3]] =
#| (self, degree, knots, points, u, order) => { try { return { ok: true, value: (() => self.calcNURBSDerivatives(degree, knots, points, u, order))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::curve_derivatives(
self : NURBSUtils,
degree : Int,
knots : FixedArray[Double],
points : FixedArray[Vector4],
u : Double,
order : Int,
) -> FixedArray[Vector3] raise ModelingError {
match
self.ffi_curve_derivatives(degree, knots, points, u, order).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn NURBSUtils::ffi_binomial(
self : NURBSUtils,
k : Int,
i : Int,
) -> JsResult[Double] =
#| (self, k, i) => { try { return { ok: true, value: (() => self.calcKoverI(k, i))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::binomial(
self : NURBSUtils,
k : Int,
i : Int,
) -> Double raise ModelingError {
match self.ffi_binomial(k, i).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn NURBSUtils::ffi_rational_derivatives(
self : NURBSUtils,
derivatives : FixedArray[Vector4],
) -> JsResult[FixedArray[Vector3]] =
#| (self, derivatives) => { try { return { ok: true, value: (() => self.calcRationalCurveDerivatives(derivatives))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::rational_derivatives(
self : NURBSUtils,
derivatives : FixedArray[Vector4],
) -> FixedArray[Vector3] raise ModelingError {
match self.ffi_rational_derivatives(derivatives).into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn NURBSUtils::ffi_surface_point(
self : NURBSUtils,
degree_u : Int,
degree_v : Int,
knots_u : FixedArray[Double],
knots_v : FixedArray[Double],
points : FixedArray[FixedArray[Vector4]],
u : Double,
v : Double,
target : Vector3,
) -> JsResult[Vector3] =
#| (self, degree_u, degree_v, knots_u, knots_v, points, u, v, target) => { try { return { ok: true, value: (() => self.calcSurfacePoint(degree_u, degree_v, knots_u, knots_v, points, u, v, target))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::surface_point(
self : NURBSUtils,
degree_u : Int,
degree_v : Int,
knots_u : FixedArray[Double],
knots_v : FixedArray[Double],
points : FixedArray[FixedArray[Vector4]],
u : Double,
v : Double,
target : Vector3,
) -> Vector3 raise ModelingError {
match
self
.ffi_surface_point(
degree_u, degree_v, knots_u, knots_v, points, u, v, target,
)
.into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}
///|
extern "js" fn NURBSUtils::ffi_volume_point(
self : NURBSUtils,
degree_u : Int,
degree_v : Int,
degree_w : Int,
knots_u : FixedArray[Double],
knots_v : FixedArray[Double],
knots_w : FixedArray[Double],
points : FixedArray[FixedArray[FixedArray[Vector4]]],
u : Double,
v : Double,
w : Double,
target : Vector3,
) -> JsResult[Vector3] =
#| (self, degree_u, degree_v, degree_w, knots_u, knots_v, knots_w, points, u, v, w, target) => { try { return { ok: true, value: (() => self.calcVolumePoint(degree_u, degree_v, degree_w, knots_u, knots_v, knots_w, points, u, v, w, target))() }; } catch (error) { return { ok: false, error: String(error) }; } }
///|
pub fn NURBSUtils::volume_point(
self : NURBSUtils,
degree_u : Int,
degree_v : Int,
degree_w : Int,
knots_u : FixedArray[Double],
knots_v : FixedArray[Double],
knots_w : FixedArray[Double],
points : FixedArray[FixedArray[FixedArray[Vector4]]],
u : Double,
v : Double,
w : Double,
target : Vector3,
) -> Vector3 raise ModelingError {
match
self
.ffi_volume_point(
degree_u, degree_v, degree_w, knots_u, knots_v, knots_w, points, u, v, w, target,
)
.into_result() {
Ok(value) => value
Err(message) => raise ModelingError(message)
}
}