@bitbybit-dev/core
Version:
Bit By Bit Developers Core CAD API to Program Geometry
172 lines (171 loc) • 6.13 kB
TypeScript
import { ContextBase } from "../../context";
import { MathBitByBit, GeometryHelper } from "@bitbybit-dev/base";
import * as Inputs from "../../inputs/inputs";
import { BaseTypes } from "../base-types";
import { VerbSurfaceConical } from "./surface-conical";
import { VerbSurfaceCylindrical } from "./surface-cylindrical";
import { VerbSurfaceExtrusion } from "./surface-extrusion";
import { VerbSurfaceRevolved } from "./surface-revolved";
import { VerbSurfaceSpherical } from "./surface-spherical";
import { VerbSurfaceSweep } from "./surface-sweep";
/**
* Contains various functions for Nurbs surfaces.
* These functions wrap around Verbnurbs library that you can find here http://verbnurbs.com/.
* Thanks Peter Boyer for his work.
*/
export declare class VerbSurface {
private readonly context;
private readonly geometryHelper;
private readonly math;
readonly cone: VerbSurfaceConical;
readonly cylinder: VerbSurfaceCylindrical;
readonly extrusion: VerbSurfaceExtrusion;
readonly sphere: VerbSurfaceSpherical;
readonly revolved: VerbSurfaceRevolved;
readonly sweep: VerbSurfaceSweep;
constructor(context: ContextBase, geometryHelper: GeometryHelper, math: MathBitByBit);
/**
* Gets the boundary edge Nurbs curves of the surface in a list
* @param inputs Nurbs surface
* @returns Array of curves
*/
boundaries(inputs: Inputs.Verb.SurfaceDto): any[];
/**
* Creates the surface by providing 4 points as corners
* @param inputs 4 points
* @returns Nurbs surface
*/
createSurfaceByCorners(inputs: Inputs.Verb.CornersDto): any;
/**
* Creates the Nurbs surface by providing uv knots, uv degrees, points and weights
* @param inputs Surface creation information
* @returns Nurbs surface
*/
createSurfaceByKnotsControlPointsWeights(inputs: Inputs.Verb.KnotsControlPointsWeightsDto): any;
/**
* Creates the Nurbs surface by lofting curves
* @param inputs Curves to loft through
* @returns Nurbs surface
*/
createSurfaceByLoftingCurves(inputs: Inputs.Verb.LoftCurvesDto): any;
/**
* Clone the Nurbs surface
* @param inputs Nurbs surface
* @returns Nurbs surface
*/
clone(inputs: Inputs.Verb.SurfaceDto): any;
/**
* Finds the closest parameter on the surface from the point
* @param inputs Nurbs surface with a point
* @returns UV parameters
*/
closestParam(inputs: Inputs.Verb.SurfaceParamDto): BaseTypes.UVDto;
/**
* Finds the closest point on the surface from the point
* @param inputs Nurbs surface with a point
* @returns Point
*/
closestPoint(inputs: Inputs.Verb.SurfaceParamDto): number[];
/**
* Gets the control points on the surface
* @param inputs Nurbs surface
* @returns Two dimensional array of points
*/
controlPoints(inputs: Inputs.Verb.SurfaceDto): number[][][];
/**
* Gets the U degree of the surface
* @param inputs Nurbs surface
* @returns U degree
*/
degreeU(inputs: Inputs.Verb.SurfaceDto): number;
/**
* Gets the V degree of the surface
* @param inputs Nurbs surface
* @returns V degree
*/
degreeV(inputs: Inputs.Verb.SurfaceDto): number;
/**
* Gets the derivatives of the surface at specified uv coordinate
* @param inputs Nurbs surface
* @returns Two dimensional array of vectors
*/
derivatives(inputs: Inputs.Verb.DerivativesDto): number[][][];
/**
* Gets the U domain of the surface
* @param inputs Nurbs surface
* @returns U domain as interval
*/
domainU(inputs: Inputs.Verb.SurfaceDto): BaseTypes.IntervalDto;
/**
* Gets the V domain of the surface
* @param inputs Nurbs surface
* @returns V domain as interval
*/
domainV(inputs: Inputs.Verb.SurfaceDto): BaseTypes.IntervalDto;
/**
* Gets the Nurbs isocurve on the surface
* @param inputs Nurbs surface
* @returns Nurbs curve
*/
isocurve(inputs: Inputs.Verb.SurfaceParameterDto): any;
/**
* Subdivides surface into preferred number of isocurves
* @param inputs Nurbs surface
* @returns Nurbs curves
*/
isocurvesSubdivision(inputs: Inputs.Verb.IsocurveSubdivisionDto): any[];
/**
* Subdivides surface into isocurves on specified array of parameters
* @param inputs Nurbs surface
* @returns Nurbs curves
*/
isocurvesAtParams(inputs: Inputs.Verb.IsocurvesParametersDto): any[];
/**
* Gets the U knots of the surface
* @param inputs Nurbs surface
* @returns Knots on u direction
*/
knotsU(inputs: Inputs.Verb.SurfaceDto): number[];
/**
* Gets the V knots of the surface
* @param inputs Nurbs surface
* @returns Knots on v direction
*/
knotsV(inputs: Inputs.Verb.SurfaceDto): number[];
/**
* Gets the normal on the surface at uv coordinate
* @param inputs Nurbs surface
* @returns Normal vector
*/
normal(inputs: Inputs.Verb.SurfaceLocationDto): number[];
/**
* Gets the point on the surface at uv coordinate
* @param inputs Nurbs surface
* @returns Point
*/
point(inputs: Inputs.Verb.SurfaceLocationDto): number[];
/**
* Reverse the Nurbs surface. This will reverse the UV origin and isocurve directions
* @param inputs Nurbs surface
* @returns Nurbs surface
*/
reverse(inputs: Inputs.Verb.SurfaceDto): any;
/**
* Splits the Nurbs surface in two halfs.
* @param inputs Nurbs surface
* @returns Two Nurbs surfaces
*/
split(inputs: Inputs.Verb.SurfaceParameterDto): any[];
/**
* Transforms the Nurbs surface with a given list of transformations.
* @param inputs Nurbs surface with transforms
* @returns Nurbs surface
*/
transformSurface(inputs: Inputs.Verb.SurfaceTransformDto): any;
/**
* Gets the weights of the surface
* @param inputs Nurbs surface
* @returns Two dimensional array of weights
*/
weights(inputs: Inputs.Verb.SurfaceDto): number[][];
}