# Analyze

`verb.eval.Analyze`

CLASS

Source code

`Analyze` contains static immutable methods for analyzing NURBS geometry. This includes, but is not limited to:

• Determining the closest points on NURBS geometry to given points
• Determining knot structure
• Evaluating geometric properties (like arc length) of NURBS curves
• Determining the parameter of at arc length of NURBS curves

## knotMultiplicities

STATIC METHOD

Source code

`knotMultiplicities(knots : KnotArray) : Array<KnotMultiplicity>`

Determine the multiplicities of the values in a knot vector

params

• array of nondecreasing knot values

returns

• Array of KnotMultiplicity objects

## isRationalSurfaceClosed

STATIC METHOD

Source code

`isRationalSurfaceClosed(surface : NurbsSurfaceData, uDir : Bool) : Bool`

Determine whether a NURBS surface is "closed" in the given direction. Essentially, this determines if the end of the surface in the given direction is continuous at its end. This is an experimental method and not hightly reliable.

params

• The NURBS surface
• Whether to analyze the continuity in the U direction or the V direction

returns

• Whether the surface is continuous or not in the supplied direction.

## rationalSurfaceClosestPoint

STATIC METHOD

Source code

`rationalSurfaceClosestPoint(surface : NurbsSurfaceData, p : Point) : Point`

Determine the closest point on a NURBS surface to a given point. This is an experimental method and not hightly reliable.

params

• The NURBS surface
• The point to which we're trying to locate the closest point on the surface

returns

• The closest point on the surface, bounded by the parametric range of the surface

## rationalSurfaceClosestParam

STATIC METHOD

Source code

`rationalSurfaceClosestParam(surface : NurbsSurfaceData, p : Point) : UV`

Determine the closest parameters on a NURBS surface to a given point. This is an experimental method and not hightly reliable.

params

• The NURBS surface
• The point to which we're trying to locate the closest parameters on the surface

returns

• The closest parameters on the surface, bounded by the parametric domain of the surface

## rationalCurveClosestPoint

STATIC METHOD

Source code

`rationalCurveClosestPoint(curve : NurbsCurveData, p : Point) : Point`

Determine the closest point on a NURBS curve to a given point.

params

• The NURBS curve
• The point to which we're trying to locate the closest point on the curve

returns

• The closest point on the surface, bounded by the parametric domain of the surface

## rationalCurveClosestParam

STATIC METHOD

Source code

`rationalCurveClosestParam(curve : NurbsCurveData, p : Point) : Float`

Determine the closest parameters on a NURBS curve to a given point.

params

• The NURBS curve
• The point to which we're trying to locate the closest parameter on the curve

returns

• The closest parameter on the curve, bounded by the parametric domain of the curve

## rationalCurveParamAtArcLength

STATIC METHOD

Source code

`rationalCurveParamAtArcLength(curve : NurbsCurveData, len : Float, tol : Float, e-3 : undefined, beziers : Array<NurbsCurveData>, bezierLengths : Array<Float>) : Float`

Approximate the parameter at a given arc length on a NURBS curve

params

• The curve for which to do the procedure
• The arc length for which to do the procedure
• the tolerance - increasing the tolerance can make this computation quite expensive
• The curve decomposed into a sequence of beziers - this will be computed if omitted but speeds up the computation computed repeatedly
• The lengths of the beziers after being decomposed

returns

• The parameter

## rationalBezierCurveParamAtArcLength

STATIC METHOD

Source code

`rationalBezierCurveParamAtArcLength(curve : NurbsCurveData, len : Float, tol : Float, totalLength : Float) : Float`

Get the curve parameter at an arc length

params

• NurbsCurveData object representing the curve
• the arc length to find the parameter
• the tolerance - increasing the tolerance can make this computation quite expensive
• the total length of the curve, if already computed

returns

• the parameter

## rationalCurveArcLength

STATIC METHOD

Source code

`rationalCurveArcLength(curve : NurbsCurveData, u : Float, gaussDegIncrease : Int)`

Approximate the length of a rational curve by gaussian quadrature - assumes a smooth curve

params

• NurbsCurveData object representing the curve
• the parameter at which to approximate the length
• the degree of gaussian quadrature to perform - a higher number yields a more exact result

returns

• the approximate length

## rationalBezierCurveArcLength

STATIC METHOD

Source code

`rationalBezierCurveArcLength(curve : NurbsCurveData, u : Float, gaussDegIncrease : Int) : Float`

Approximate the length of a rational bezier curve by gaussian quadrature - assumes a smooth curve

params

• NurbsCurveData object representing the curve
• the parameter at which to approximate the length
• the degree of gaussian quadrature to perform - a higher number yields a more exact result

returns

• the approximate length

# KnotMultiplicity

`verb.eval.KnotMultiplicity`

CLASS

Source code

A simple helper class to represent the multiplicity of a knot at a given position.

## constructor

METHOD

Source code

`new KnotMultiplicity(knot : Float, mult : Int)`

Create a new KnotMultiplicity object params

• The knot position
• The multiplicity of the knot

## inc

METHOD

Source code

`inc()`

Increments the multiplicity of the knot

## knot

PROPERTY

Source code

`knot : Float`

The parameter of the knot

## mult

PROPERTY

Source code

`mult : Int`

The multiplicity (i.e. the number of repeated occurrences) of the given knot in a knot vector