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

#### 16.1.4.2 Height 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