# Synopsis

PDX_MSGT gdx_LeastSquaresNurbSurf(long option, double pts[], int model, int npu, int npv, double **upar, double **vpar, int p_flg, double **uknots, double **vknots, int k_flg, int nucps, int nvcps, int uord, int vord, T_GDX_NURB_SURF **gdx_sur)

# Purpose

Create GDX NURB Surface by least squares fit of point data.

# Description

This routine does a least squares surface fit to a mesh of point data. The surface is constrained to interpolate the four corner data points precisely.

# Input

## option

Not used.

## pts

The rectangular mesh of data points to be fitted. The array is accessed as 1-dimensional, but in the index order: pts[npv][npu][3] (rightmost index varies the fastest).

## model

The GDX model for entity creation.

## npu

Number of data points in the u-direction.

## npv

Number of data points in the v-direction.

## upar

The u-direction parameter values (npu of them). See p_flg.

## vpar

The v-direction parameter values (npv of them). See p_flg.

## p_flg

A flag: -1 : No values in upar and vpar. This routine will compute the upar and vpar values and discard them before returning. Uses averaging of the normalized relative chord lengths. 0 : No values in upar and vpar. This routine will compute them and return them in the arrays upar and vpar. Uses averaging of the normalized relative chord lengths. The memory for arrays upar and vpar will be allocated in this routine. 1 : The parameter values are in upar and vpar.

## uknots

The u-knot vector (see k_flg).

## vknots

The v-knot vector (see k_flg).

## k_flg

A flag: -1 : No values in uknots and vknots. This routine will compute the knots (equally spaced). The knots will not be returned. 0 : No values in uknots and vknots. This routine will compute the knots (equally spaced) and return them in the arrays uknots and vknots. Memory allocated in this routine. 1 : The knots are in arrays uknots and vknots.

## nucps

Number of u-direction control points in the fitted surface. The following inequality must hold: uord <= nucps < npu-4.

## nvcps

Number of v-direction control points in the fitted surface. The following inequality must hold: vord <= nvcps < npv-4.

## uord

Order of the b-spline surface in the u-direction.

## vord

Order of the b-spline surface in the v-direction.

# Output

## upar

(if p_flg == 0).

## vpar

(if p_flg == 0).

## uknots

(if k_flg == 0).

## vknots

(if k_flg == 0).

## gdx_sur

The GDX NURB Surface fitted to the data.

# Return

          GDX_NOERR
          GDX_BADDATA  (uord<=nucps<npu-4 or vord<=nvcps<npv-4 not true )
          GDX_SINGULAREQS  (singular system of equations)
          Low level error return
          .fi