This appendix describes the format of the files that store data for the height field primitive. The format is an historical relic; a better format is needed.
Height field data is stored in binary form. The first record in the file is a 32-bit integer giving the square root of number of data points in the file. We'll call this number the size of the height field.
The size is
followed by altitude (z) values stored as 32-bit
floating point values. The 0th value in the file specifies the z
coordinate
of the lower-left corner of the height field (0, 0).
The next
specifies the Z coordinate for
While this file format is compact, it sacrifices portability for
ease of use. While creating and handling height field files is
simple, transporting a height field from one machine to another
is problematical due to the fact that differences in byte order
and floating-point format between machines is not taken into
account.
These problems could be circumvented by writing the height field file
in a fixed-point format, taking care to write the bytes that
encode a given value in a consistent way from machine to machine.
An even better idea would be to write a set of tools for
manipulating arbitrary 2D arrays of floating-point values in a compact,
portable way, allowing for comments and the like in the file...