# tdstri

Adds triangles defining a simple surface to a triangle list (for use with selected TDPACK routines).

*Available in version 4.3.1 and later.*

## Prototype

procedure tdstri ( u [*] : float, v [*] : float, w [*][*] : float, rtri [*][10] : float, ntri [1] : integer, render_index [1] : integer )

## Arguments

*u*

A real array dimensioned *nu* which must be monotonically increasing.

*v*

A real array dimensioned *nv* which must be monotonically increasing.

*w*

A real array dimensioned *nv* x *nu*, which, along
with *u* and *v*, defines the surface to be drawn.

*rtri*

A float input/output array, dimensioned *mtri* x 10, in which
a list of triangles has been stored.

*ntri*

An input/output integer specifying the number of triangles currently
in the triangle list.. It is the user's responsibility to zero this
initially and its value is increased by each call to a
triangle-generating routine like **tdstri**. If
*ntri* becomes equal to *mtri*,
**tdstri** does not take an error exit; instead, it
just stops generating triangles. Therefore, it's a good idea, after
calling **tdstri**, to check the value of *ntri*
against the dimension *mtri*; if they're equal, it probably
means that the triangle list filled up and that the rendered surface
will be incomplete.

*render_index*

An input integer scalar specifying the index of the rendering style to to be used for the triangles added to the triangle list by this call. See the low-level "Rendering-Style Arrays" section for descriptions of the internal parameters defining the rendering styles.

## Description

This routine is part of the low-level TDPACK package, which is a group of Fortran and C callable routines for projecting objects from a 3-dimensional coordinate system having U, V, and W axes to a 2-dimensional projection plane having X and Y axes and/or for drawing the projections of those objects. This can be referred to somewhat loosely as "drawing objects in three dimensions".

Please see the documentation on TDSTRI for a full description of this procedure.

## See Also

Initialization routines:
**tdinit**,
**tdpara**,
**tdclrs**

Parameter access routines:
**tdgetp**,
**tdgtrs**,
**tdsetp**,
**tdstrs**

Point transforming routines:
**tdprpt**,
**tdprpa**,
**tdprpi**

Line drawing routines:
**tdline**,
**tdlndp**,
**tdlnpa**,
**tdlpdp**,
**tdcurv**,
**tdcudp**

Grid drawing routines:
**tdgrds**,
**tdgrid**

Label drawing routines:
**tdlbls**,
**tdlbla**,
**tdlblp**,
**tdplch**

Surface drawing routines:
**tddtri**,
**tditri**,
**tdmtri**,
**tdttri**,
**tdctri**,
**tdotri**,
**tdsort**

Simplified interface routines:
**tdez2d**,
**tdez3d**

## Examples

See example 4 on the three-dimensional graphics applications page.