# TK_NURBS_Surface

## Functions

| `TK_NURBS_Surface`
| `~TK_NURBS_Surface`
`TK_Status` | `Read`
`TK_Status` | `Write`
`TK_Status` | `Clone`
`TK_Status` | `ReadAscii`
`TK_Status` | `WriteAscii`
void | `Reset`
void | `SetSurface`
void | `SetDSurface`
float const * | `GetPoints`
float * | `GetPoints`
double const * | `GetDPoints`
double * | `GetDPoints`
int | `GetUDegree`
int | `GetVDegree`
int | `GetUSize`
int | `GetVSize`
float const * | `GetWeights`
float * | `GetWeights`
float const * | `GetUKnots`
float * | `GetUKnots`
float const * | `GetVKnots`
float * | `GetVKnots`
void | `SetOptions`
int | `GetOptions`
HT_NURBS_Trim * | `NewTrim`
HT_NURBS_Trim * | `GetTrims`

## Detailed Description

class `TK_NURBS_Surface` : public BBaseOpcodeHandler

  Handles the TKE_NURBS_Surface opcode.

  TK_NURBS_Surface provides support for writing/reading the TKE_NURBS_Surface opcode object to/from an HSF file.

  The HOOPS/3dGS scene-graph supports NURBS surface primitives

  Public Functions

  `TK_NURBS_Surface`()
  `~TK_NURBS_Surface`()
  virtual TK_Status `Read`(BStreamFileToolkit &tk)

    Reads data from the toolkit buffer, decodes/decompresses it, and maps it to the opcode handlers data members. User-defined classes which need to write out custom data should utilize one of the available GetData() methods.

    Parameters: | tk – A reference to the BStreamFileToolkit object.
    Returns: | The result of the function call.

  virtual TK_Status `Write`(BStreamFileToolkit &tk)

    Encodes/compresses data and writes data to the toolkit buffer. User-defined classes which need to write out custom data should utilize one of the available PutData() methods, and first write out the opcode associated with the group of binary data followed by the data itself.

    Parameters: | tk – A reference to the BStreamFileToolkit object.
    Returns: | The result of the function call.

  virtual TK_Status `Clone`(BStreamFileToolkit &tk, BBaseOpcodeHandler **handler) const

    Copies the opcode handler

    Parameters: | tk – A reference to the BStreamFileToolkit object. handler – A pointer to the opcode handler object. Passed by reference.
    Returns: | The result of the function call.

  TK_Status `ReadAscii`(BStreamFileToolkit &tk)

    Deprecated.

  TK_Status `WriteAscii`(BStreamFileToolkit &tk)

    Deprecated.

  virtual void `Reset`()

    prepares the handler for reuse during reading or writing

  void `SetSurface`(int u_degree, int v_degree, int u_size, int v_size, float const points[] = 0, float const weights[] = 0, float const u_knots[] = 0, float const v_knots[] = 0)

    allocates all of the arrays that could be present in a nurbs surface (even if they are eventually left unused), and copies whatever data is given.

  void `SetDSurface`(int u_degree, int v_degree, int u_size, int v_size, double const points[] = 0, float const weights[] = 0, float const u_knots[] = 0, float const v_knots[] = 0)

    allocates all of the arrays that could be present in a nurbs surface (even if they are eventually left unused), and copies whatever data is given.

  inline float const *`GetPoints`() const

    returns a const pointer to the array of floats for control point coordinates

  inline float *`GetPoints`()

    returns a mutable pointer to the array of floats for control point coordinates

  inline double const *`GetDPoints`() const

    returns a const pointer to the array of doubles for control point coordinates

  inline double *`GetDPoints`()

    returns a mutable pointer to the array of doubles for control point coordinates

  inline int `GetUDegree`() const

    gets the degree in the U direction of the NURBS Surface.

  inline int `GetVDegree`() const

    gets the degree in the V direction of the NURBS Surface. Note that it need not be the same as the U direction (e.g. a cylinder is linear in one direction)

  inline int `GetUSize`() const

    gets the number of control points in the U direction

  inline int `GetVSize`() const

    gets the number of control points in the V direction

  inline float const *`GetWeights`() const

    returns a const pointer to the array of weights to apply to the control points

  inline float *`GetWeights`()

    returns a mutable pointer to the array of weights to apply to the control points

  inline float const *`GetUKnots`() const

    returns a const pointer to the array of floats for the surface knot vector in the u direction. Of length GetUDegree() + GetUSize() + 1.

  inline float *`GetUKnots`()

    returns a mutable pointer to the array of floats for the surface knot vector in the u direction. Of length GetUDegree() + GetUSize() + 1.

  inline float const *`GetVKnots`() const

    returns a const pointer to the array of floats for the surface knot vector in the v direction. Of length GetVDegree() + GetVSize() + 1.

  inline float *`GetVKnots`()

    returns a mutable pointer to the array of floats for the surface knot vector in the v direction. Of length GetVDegree() + GetVSize() + 1.

  inline void `SetOptions`(int o)

    sets the bit flags to indicate the presence of the various optional values of the NURBS Surface. Currently defined bit values are NS_HAS_WEIGHTS, NS_HAS_KNOTS, and NS_HAS_TRIMS.

  inline int `GetOptions`() const

    gets the bit flags to indicate the presence of the various optional values of the NURBS Surface. Currently defined bit values are NS_HAS_WEIGHTS, NS_HAS_KNOTS, and NS_HAS_TRIMS.

  HT_NURBS_Trim *`NewTrim`(int type = 0)

    creates a new instance of an HT_NURBS_Trim object to handle trims

  inline HT_NURBS_Trim *`GetTrims`()

    returns a mutable pointer to the head of the linked list of trims

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Visualize 3DF in your own language, or choose a sample question below to start a conversation:

What is HOOPS Visualize 3DF?
What are the latest release notes for HOOPS Visualize 3DF?
How do I start evaluating HOOPS Visualize 3DF?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...