** Next:** 16.1.4.3 Contouring
** Up:** 16.1.4 Rendering Data Values
** Previous:** 16.1.4.1 Point Fields

If the spatial distribution of the points is two dimensional, the third
dimension can be use to represent the data value of each sample.
One way to create the geometry for this technique is to perturb a flat
plane, changing the altitude of the plane at each sample point. This
perturbation can be used to distort the plane into a mountainous
surface, using the data points as vertices of the polygon. Another
technique is to leave the plane flat, and draw lines perpendicular
from the surface to the data point. In each case, the data value is
the perpendicular distance from the point to the reference plane. If
the data is very noisy, the distorted plane can become very jagged,
making it hard to interpret the data. Additional points can be
inserted to smooth transitions, and the plane can be made partially
transparent so that the terrain won't obscure neighboring points as
much. For details on rendering transparent objects, see
Section 12.2
This technique can be more render intensive than point fields. Back
face culling may improve fill performance if the viewing angle is
oblique enough that many triangles are backfacing.
As before, a display list for a static surface, or
vertex array representation for a dynamic one, will also improve
performance.

How the perturbed plane is tessellated can effect both rendering
performance and visual appearance of the resulting surface. If the
samples are regularly spaced, choosing connectivity is relatively
easy. If the the sample spacing isn't regular, then a deluanay
tessellation scheme is a good choice, since it produces ``fat''
triangles (triangles with large angles at each vertex), which gives
the best representation for a given surface. Delaunay triangulation
algorithms are beyond the scope of these notes; an excellent book on
the subject is written by O'Rourke [73] this and similar
topics. See Section 3 for a discussion of tessellation.

** Next:** 16.1.4.3 Contouring
** Up:** 16.1.4 Rendering Data Values
** Previous:** 16.1.4.1 Point Fields
*David Blythe*

*1999-08-06*