# Synopsis

PDX_MSGT gdx_EvalSurfaceDerivs(long option, MDA_PTR db_ptr, double uval, double vval, int max_derivs, double derivs[][GDX_MAX_DEG + 1][3])

# Purpose

Evaluate derivatives on a GDX surface entity

# Description

At a given U and V parameter value between 0.0 and 1.0 inclusive, evaluate derivatives on an GDX surface entity. The derivs array, derivs[j][i][3], returned is for all i, j such that:

                 0 <= i + j <= max_derivs.

derivs[j][i][3] corresponds to the x, y, and z components of the derivative of the surface at uval, vval taken with respect to u i times and with respect to v j times (i.e., derivs[0][0][3] corresponds to the point on the surface and derivs[0][1][3] corresponds to the partial derivative with respect to u, etc.). Therefore, a max_derivs of 0 is equivalent to simply evaluating a point on the GDX surface entity.

The GDX surface entity must be a valid GDX definition. The derivatives can be evaluated from the left or right. The @a derivs array MUST be dimensioned to [max_derivs + 1][GDX_MAX_DEG + 1][3].

The default is to evaluate the derivitives from high U and V parameter values. By using the GDX_FROM_LOW_U or GDX_FROM_LOW_V options, the GDX surface can be evaluated from low U and/or low V values.

# Input

## option

### GDX_UNNORM

Unnormalize the parameter values

### GDX_FROM_LOW_U

Evaluate derivatives from the low U parameter insead of high U.

### GDX_FROM_LOW_V

Evaluate derivatives from the low V parameter insead of high V.

## db_ptr

The GDX surface entity database pointer

## uval

The surface U parameter value to evaluate

## vval

The surface V parameter value to evaluate

## max_derivs

The maximium derivative required

# Output

## derivs

The 3D mixed partial derivatives

# Return

          GDX_NOERR
          GDX_ENTITYNOTSURFACE
          Low level error return
          .fi