@bitbybit-dev/core
Version:
Bit By Bit Developers Core CAD API to Program Geometry
230 lines (229 loc) • 8.16 kB
TypeScript
import { ContextBase } from "../../context";
import { GeometryHelper, MathBitByBit } from "@bitbybit-dev/base";
import * as Inputs from "../../inputs";
import { BaseTypes } from "../base-types";
import { VerbCurveCircle } from "./curve-circle";
import { VerbCurveEllipse } from "./curve-ellipse";
/**
* Contains various methods for nurbs curves.
* These methods wrap around Verbnurbs library that you can find here http://verbnurbs.com/.
* Thanks Peter Boyer for his work.
*/
export declare class VerbCurve {
private readonly context;
private readonly geometryHelper;
private readonly math;
readonly circle: VerbCurveCircle;
readonly ellipse: VerbCurveEllipse;
constructor(context: ContextBase, geometryHelper: GeometryHelper, math: MathBitByBit);
/**
* Creates a Nurbs curve by providing knots, control points & weights
* @param inputs Contains knots, control points and weights
* @returns Nurbs curve
*/
createCurveByKnotsControlPointsWeights(inputs: Inputs.Verb.CurveNurbsDataDto): any;
/**
* Creates a Nurbs curve by providing control points
* @param inputs Control points
* @returns Nurbs curve
*/
createCurveByPoints(inputs: Inputs.Verb.CurvePathDataDto): any;
/**
* Creates a Bezier Nurbs curve by providing control points and weights
* @param inputs Control points
* @returns Bezier Nurbs curve
*/
createBezierCurve(inputs: Inputs.Verb.BezierCurveDto): any;
/**
* Clone the Nurbs curve
* @param inputs Nurbs curve
* @returns Nurbs curve
*/
clone(inputs: Inputs.Verb.CurveDto): any;
/**
* Finds the closest param on the Nurbs curve from the point
* @param inputs Nurbs curve with point
* @returns Param number
*/
closestParam(inputs: Inputs.Verb.ClosestPointDto): number;
/**
* Finds the closest params on the Nurbs curve from the points
* @param inputs Nurbs curve with points
* @returns Param numbers
*/
closestParams(inputs: Inputs.Verb.ClosestPointsDto): number[];
/**
* Finds the closest point on the Nurbs curve from the point
* @param inputs Nurbs curve with point
* @returns Point
*/
closestPoint(inputs: Inputs.Verb.ClosestPointDto): Inputs.Base.Point3;
/**
* Finds the closest points on the Nurbs curve from the list of points
* @param inputs Nurbs curve with points
* @returns Points
*/
closestPoints(inputs: Inputs.Verb.ClosestPointsDto): Inputs.Base.Point3[];
/**
* Finds the control points of the Nurbs curve
* @param inputs Nurbs curve
* @returns Points
*/
controlPoints(inputs: Inputs.Verb.CurveDto): Inputs.Base.Point3[];
/**
* Finds the degree of the Nurbs curve
* @param inputs Nurbs curve
* @returns Degree number
*/
degree(inputs: Inputs.Verb.CurveDto): number;
/**
* Finds the derivatives of the Nurbs curve at parameter
* @param inputs Nurbs curve with specified derivative number and parameter
* @returns Derivatives
*/
derivatives(inputs: Inputs.Verb.CurveDerivativesDto): number[];
/**
* Divides the curve by equal arc length to parameters
* @param inputs Nurbs curve
* @returns Parameters
*/
divideByEqualArcLengthToParams(inputs: Inputs.Verb.CurveSubdivisionsDto): number[];
/**
* Divides the curve by equal arc length to points
* @param inputs Nurbs curve
* @returns Points
*/
divideByEqualArcLengthToPoints(inputs: Inputs.Verb.CurveSubdivisionsDto): Inputs.Base.Point3[];
/**
* Divides the curve by arc length to parameters
* @param inputs Nurbs curve
* @returns Parameters
*/
divideByArcLengthToParams(inputs: Inputs.Verb.CurveDivideLengthDto): number[];
/**
* Divides the curve by arc length to points
* @param inputs Nurbs curve
* @returns Points
*/
divideByArcLengthToPoints(inputs: Inputs.Verb.CurveDivideLengthDto): Inputs.Base.Point3[];
/**
* Divides multiple curves by equal arc length to points
* @param inputs Nurbs curves
* @returns Points placed for each curve in separate arrays
*/
divideCurvesByEqualArcLengthToPoints(inputs: Inputs.Verb.CurvesSubdivisionsDto): Inputs.Base.Point3[][];
/**
* Divides multiple curves by arc length to points
* @param inputs Nurbs curves
* @returns Points placed for each curve in separate arrays
*/
divideCurvesByArcLengthToPoints(inputs: Inputs.Verb.CurvesDivideLengthDto): Inputs.Base.Point3[][];
/**
* Finds the domain interval of the curve parameters
* @param inputs Nurbs curve
* @returns Interval domain
*/
domain(inputs: Inputs.Verb.CurveDto): BaseTypes.IntervalDto;
/**
* Start point of the curve
* @param inputs Nurbs curve
* @returns Start point
*/
startPoint(inputs: Inputs.Verb.CurveDto): Inputs.Base.Point3;
/**
* End point of the curve
* @param inputs Nurbs curve
* @returns End point
*/
endPoint(inputs: Inputs.Verb.CurveDto): Inputs.Base.Point3;
/**
* Start points of the curves
* @param inputs Nurbs curves
* @returns Start points
*/
startPoints(inputs: Inputs.Verb.CurvesDto): Inputs.Base.Point3[];
/**
* End points of the curves
* @param inputs Nurbs curves
* @returns End points
*/
endPoints(inputs: Inputs.Verb.CurvesDto): Inputs.Base.Point3[];
/**
* Finds the knots of the Nurbs curve
* @param inputs Nurbs curve
* @returns Knots
*/
knots(inputs: Inputs.Verb.CurveDto): number[];
/**
* Gets the length of the Nurbs curve at specific parameter
* @param inputs Nurbs curve and parameter
* @returns Length
*/
lengthAtParam(inputs: Inputs.Verb.CurveParameterDto): number;
/**
* Gets the length of the Nurbs curve
* @param inputs Nurbs curve
* @returns Length
*/
length(inputs: Inputs.Verb.CurveDto): number;
/**
* Gets the param at specified length on the Nurbs curve
* @param inputs Nurbs curve, length and tolerance
* @returns Parameter
*/
paramAtLength(inputs: Inputs.Verb.CurveLengthToleranceDto): number;
/**
* Gets the point at specified parameter on the Nurbs curve
* @param inputs Nurbs curve and a parameter
* @returns Point
*/
pointAtParam(inputs: Inputs.Verb.CurveParameterDto): Inputs.Base.Point3;
/**
* Gets the points at specified parameter on the Nurbs curves
* @param inputs Nurbs curves and a parameter
* @returns Points in arrays for each curve
*/
pointsAtParam(inputs: Inputs.Verb.CurvesParameterDto): Inputs.Base.Point3[];
/**
* Reverses the Nurbs curve
* @param inputs Nurbs curve
* @returns Reversed Nurbs curve
*/
reverse(inputs: Inputs.Verb.CurveDto): any;
/**
* Splits the Nurbs curve in two at a given parameter
* @param inputs Nurbs curve with parameter
* @returns Nurbs curves
*/
split(inputs: Inputs.Verb.CurveParameterDto): any[];
/**
* Tangent of the Nurbs curve at a given parameter
* @param inputs Nurbs curve with parameter
* @returns Tangent vector
*/
tangent(inputs: Inputs.Verb.CurveParameterDto): Inputs.Base.Vector3;
/**
* Tessellates the Nurbs curve into a list of points
* @param inputs Nurbs curve with tolerance
* @returns Points
*/
tessellate(inputs: Inputs.Verb.CurveToleranceDto): Inputs.Base.Point3[];
/**
* Transforms the Nurbs curve
* @param inputs Nurbs curve with transformation matrixes
* @returns Transformed curve
*/
transform(inputs: Inputs.Verb.CurveTransformDto): any;
/**
* Transforms the Nurbs curves
* @param inputs Nurbs curves with transformation matrixes
* @returns Transformed curves
*/
transformCurves(inputs: Inputs.Verb.CurvesTransformDto): any[];
/**
* Weights of the Nurbs curve
* @param inputs Nurbs curve
* @returns Weights
*/
weights(inputs: Inputs.Verb.CurveDto): number[];
}