===============
TKE_NURBS_Curve
===============

Opcode
======

.. csv-table::

	"ASCII", "N"
	"Hexadecimal", "4E"
	"Decimal", "78"


Operands
========

| Byte options, Byte degree, Long control_count, (
| control_count)xPoint control_points, [(control_count)xFloat weights],
| [(control_count+degree+1)xFloat knots],
| [Float start], [Float end] 

.. csv-table::

	"options", "bitmask indicating which options are present"
	"degree", "degree of the curve"
	"control_count", "number of control points in the curve"
	"control_points", "``control_count`` triplets of x, y, z data"
	"weights", "``control_count`` weight factors"
	"knots", "``control_count + degree + 1`` knot values"
	"start", "parametric start point (0-1, default 0)"
	"end", "parametric end point (0-1, default 1)"


Notes
=====

Standard NURBS curve definition. Curve is inserted into the currently opened segment.

The parametric start and end points are defined to range from zero to one, which is different from some solid modelers. Solid modelling kernels typically parameterize their curves with respect to the given knot vector.

Any fields that can be left unspecified have default values: 0 for ``start``, 1 for ``end``, linearly increasing values for ``knot`` (i.e. [0,1,2,3,4,5,6,7...]) and uniform ``weights`` (i.e. [1,1,1,1,1...]).


Option flags
------------

.. csv-table::

	"0001", "Weights are specified"
	"0002", "Knots are specified"
	"0004", "Start is specified"
	"0008", "End is specified"
	
