# HMIN_writeNURBS()

Specifies the next segment in the current line as a NURBS curve.

## Syntax

`void HMIN_writeNURBS(unsigned int degree, unsigned int number_points, double * points, double * weights, unsigned int number_knots, double * knots, double knot_tolerance, double start_t, double end_t);`

## Type

HyperMesh hminlib Function

## Description

Specifies the next segment in the current line as a NURBS curve.

## Inputs

`degree`- The degree of the NURBS.
`number_points`- The number of control points in the NURBS.
`points`- Those control points, in the form X1, Y1, Z1, X2, Y2, Z2, and so on.
`weights`- If the NURBS is rational, this is the weight given to each control point. If the NURBS is polynomial, a null pointer should be passed in.
`number_knots`- The number of knots in the NURBS's controlling knot sequence.
`knots`- The knot sequence.
`knot_tolerance`- The tolerance that determines if two knots are the same.
`start_t`- The parameter value at the start of the portion of the curve under consideration.
`end_t`- The parameter value at the end of the portion of the curve under consideration.

## Example

Refer to the HyperMesh User’s Manual for a detailed description of the structure and meaning of NURBS curves.

- HyperMesh requires that its lines be C1 arc length continuous. Thus multiple control points or knots of multiplicity of the degree or greater force HyperMesh to modify the line. You can avoid these problems by breaking the single NURBS into two or more NURBS; this, in fact, is how HyperMesh handles it.
- The above caveat implies that NURBS of degree 1 are always problematical. This is certainly the case; avoid them if possible.

This command is only valid after a call to HMIN_startline() and before the corresponding call to HMIN_endline().

## Errors

None.