Skip to content

Shapemetry API


Shapemetry API / NurbsSurface

Class: NurbsSurface

Defined in: surfaces/NurbsSurface.ts:26

A NURBS surface evaluated over (u, v) ∈ [0, 1]² (Z-up). pointAt(u, v) / normalAt(u, v).

Implements

Constructors

Constructor

new NurbsSurface(degreeU, degreeV, knotsU, knotsV, controlPoints, weights, trim?, plate?): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:36

Parameters

degreeU

number

degreeV

number

knotsU

number[]

knotsV

number[]

controlPoints

Point[][]

weights

number[][]

trim?

Point[][] = []

plate?

object

Returns

NurbsSurface

Properties

degreeU

degreeU: number

Defined in: surfaces/NurbsSurface.ts:27

Implementation of

NurbsSurfaceJSON.degreeU


degreeV

degreeV: number

Defined in: surfaces/NurbsSurface.ts:28

Implementation of

NurbsSurfaceJSON.degreeV


knotsU

knotsU: number[]

Defined in: surfaces/NurbsSurface.ts:29

Implementation of

NurbsSurfaceJSON.knotsU


knotsV

knotsV: number[]

Defined in: surfaces/NurbsSurface.ts:30

Implementation of

NurbsSurfaceJSON.knotsV


controlPoints

controlPoints: Point[][]

Defined in: surfaces/NurbsSurface.ts:31

Implementation of

NurbsSurfaceJSON.controlPoints


weights

weights: number[][]

Defined in: surfaces/NurbsSurface.ts:32

Implementation of

NurbsSurfaceJSON.weights


trim

trim: Point[][]

Defined in: surfaces/NurbsSurface.ts:33


plate?

optional plate?: object

Defined in: surfaces/NurbsSurface.ts:34

Methods

clone()

clone(): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:106

Returns

NurbsSurface


pointAt()

pointAt(u, v): Point

Defined in: surfaces/NurbsSurface.ts:117

Parameters

u

number

v

number

Returns

Point


partialU()

partialU(u, v): Vector

Defined in: surfaces/NurbsSurface.ts:119

Parameters

u

number

v

number

Returns

Vector


partialV()

partialV(u, v): Vector

Defined in: surfaces/NurbsSurface.ts:121

Parameters

u

number

v

number

Returns

Vector


normalAt()

normalAt(u, v): Vector

Defined in: surfaces/NurbsSurface.ts:123

Parameters

u

number

v

number

Returns

Vector


closestParam()

closestParam(p, seed?): [number, number]

Defined in: surfaces/NurbsSurface.ts:135

Parameters

p

Point

seed?

[number, number]

Returns

[number, number]


isocurve()

isocurve(t, dir): NurbsCurve

Defined in: surfaces/NurbsSurface.ts:137

Parameters

t

number

dir

SurfaceDirection

Returns

NurbsCurve


curvature()

curvature(u, v): SurfaceCurvature

Defined in: surfaces/NurbsSurface.ts:141

Parameters

u

number

v

number

Returns

SurfaceCurvature


splitAt()

splitAt(t, dir): [NurbsSurface, NurbsSurface]

Defined in: surfaces/NurbsSurface.ts:143

Parameters

t

number

dir

SurfaceDirection

Returns

[NurbsSurface, NurbsSurface]


transform()

transform(tr): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:151

Parameters

tr

Transformation

Returns

NurbsSurface


toTriangleMesh()

toTriangleMesh(normTol?): TriangleMeshJSON

Defined in: surfaces/NurbsSurface.ts:161

Parameters

normTol?

number

Returns

TriangleMeshJSON


boundingBox()

boundingBox(): BoundingBox

Defined in: surfaces/NurbsSurface.ts:167

Returns

BoundingBox


surfaceArea()

surfaceArea(): number

Defined in: surfaces/NurbsSurface.ts:178

Returns

number


extendWith()

extendWith(newPoints, gridN, samples): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:190

Parameters

newPoints

Point[]

gridN

number

samples

number

Returns

NurbsSurface


boundary()

boundary(): NurbsCurve[]

Defined in: surfaces/NurbsSurface.ts:210

Returns

NurbsCurve[]


section()

section(planePoint, planeNormal): NurbsCurve[]

Defined in: surfaces/NurbsSurface.ts:220

Parameters

planePoint

Point

planeNormal

Vector

Returns

NurbsCurve[]


offset()

offset(distance): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:240

Parameters

distance

number

Returns

NurbsSurface


thicken()

thicken(thickness, wallSamples?, normTol?): TriangleMesh

Defined in: surfaces/NurbsSurface.ts:294

Build a closed shell triangle mesh (top + bottom + side walls) by offsetting -thickness.

Parameters

thickness

number

wallSamples?

number = 20

normTol?

number = 0.5

Returns

TriangleMesh


trimBy()

trimBy(curves, keepInside): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:328

Parameters

curves

NurbsCurve[]

keepInside

boolean

Returns

NurbsSurface


splitByPlane()

splitByPlane(planePoint, planeNormal): NurbsSurface[]

Defined in: surfaces/NurbsSurface.ts:348

Parameters

planePoint

Point

planeNormal

Vector

Returns

NurbsSurface[]


blend()

blend(other): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:382

Parameters

other

NurbsSurface

Returns

NurbsSurface


divide()

divide(nU, nV, includeNormals): DivideOut

Defined in: surfaces/NurbsSurface.ts:403

Parameters

nU

number

nV

number

includeNormals

boolean

Returns

DivideOut


evalPlate()

evalPlate(u, v): Point

Defined in: surfaces/NurbsSurface.ts:414

Parameters

u

number

v

number

Returns

Point


toJSON()

toJSON(): NurbsSurfaceJSON

Defined in: surfaces/NurbsSurface.ts:420

Returns

NurbsSurfaceJSON


fromJSON()

static fromJSON(d): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:424

Parameters

d

NurbsSurfaceJSON

Returns

NurbsSurface


fromCorners()

static fromCorners(p00, p10, p01, p11): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:430

Parameters

p00

Point

p10

Point

p01

Point

p11

Point

Returns

NurbsSurface


uniformGrid()

static uniformGrid(degreeU, degreeV, controlPoints, weights): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:434

Parameters

degreeU

number

degreeV

number

controlPoints

Point[][]

weights

number[][]

Returns

NurbsSurface


cylinder()

static cylinder(center, axis, radius, height): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:438

Parameters

center

Point

axis

Vector

radius

number

height

number

Returns

NurbsSurface


cone()

static cone(center, axis, r0, r1, height): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:442

Parameters

center

Point

axis

Vector

r0

number

r1

number

height

number

Returns

NurbsSurface


torus()

static torus(center, axis, rMajor, rMinor): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:446

Parameters

center

Point

axis

Vector

rMajor

number

rMinor

number

Returns

NurbsSurface


sphere()

static sphere(center, xAxis, yAxis, radius): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:450

Parameters

center

Point

xAxis

Vector

yAxis

Vector

radius

number

Returns

NurbsSurface


loft()

static loft(curves, degreeV): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:454

Parameters

curves

NurbsCurve[]

degreeV

number

Returns

NurbsSurface


revolve()

static revolve(curves, center, axis, angle): NurbsSurface[]

Defined in: surfaces/NurbsSurface.ts:458

Parameters

curves

NurbsCurve[]

center

Point

axis

Vector

angle

number

Returns

NurbsSurface[]


extrude()

static extrude(curves, direction, distance): NurbsSurface[]

Defined in: surfaces/NurbsSurface.ts:462

Parameters

curves

NurbsCurve[]

direction

Vector

distance

number

Returns

NurbsSurface[]


patch()

static patch(curves, gridN, samples): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:477

Parameters

curves

NurbsCurve[]

gridN

number

samples

number

Returns

NurbsSurface


patchWithEdges()

static patchWithEdges(edges, gridN, samples): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:493

Parameters

edges

EdgeSpec[]

gridN

number

samples

number

Returns

NurbsSurface


fromPlatePatch()

static fromPlatePatch(constraints, options?): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:549

Thin-plate spline surface fitted through constraint points in UV space. Point constraints (G0) are always interpolated exactly. Tangent and curvature constraints are applied via penalty weights.

Parameters

constraints

PlateConstraint[]

Point constraints: { u, v, target: Point } where u,v ∈ [0,1].

options?
tanConstraints?

PlateTangentConstraint[]

Tangent constraints (G1 penalty).

curvConstraints?

PlateCurvatureConstraint[]

Curvature constraints (G2 penalty).

gridN?

number

Grid resolution for NURBS approximation (default 16, min 4).

order?

number

TPS order (2=thin plate, 3=biharmonic). Default 3.

muTan?

number

Tangent penalty weight (default 100).

muCurv?

number

Curvature penalty weight (default 100).

Returns

NurbsSurface


fromPlatePatchG1()

static fromPlatePatchG1(g0Constraints, g1Constraints, options?): NurbsSurface

Defined in: surfaces/NurbsSurface.ts:580

Thin-plate spline surface with hard G1 (tangent) constraints enforced exactly via a saddle-point augmented system (no penalty weighting — constraints are satisfied to machine precision rather than minimized).

Parameters

g0Constraints

PlateConstraint[]

Point constraints { u, v, target }.

g1Constraints

PlateTangentConstraint[]

Tangent constraints { u, v, dirU, dirV, tangent }.

options?
gridN?

number

Grid resolution for NURBS approximation (default 16).

order?

number

TPS order (default 3).

Returns

NurbsSurface


pipe()

static pipe(profiles, path, samples): NurbsSurface[]

Defined in: surfaces/NurbsSurface.ts:604

Parameters

profiles

NurbsCurve[]

path

NurbsCurve

samples

number

Returns

NurbsSurface[]