3.1.1 Surfaces
Surfaces are limited to regular 2D arrays: z
x,y
=
s(x, y) defines the surface function s. This is suf-
ficient for surface representations for a wide range
of experiment data. A maximum of ten surface pre-
scriptions may be loaded for viewing in a session and
may be selected/deselected for viewing from key ac-
tions. Surfaces comprising up to 200,000 vertices are
comfortably handled but more typically comprise 20–
50,000 points for entropy surface descriptions arising
in our sleep-analysis.
The surface object is indicated by the lower case
specifier, s, followed by colon separator, and label
text. Two integers follow to define the associated data
array size. Six further parameters indicate the x-, y-,
z- floating-point scale-factors and offsets, used to size
and position the surface within the field of view. Then
follows the surface data, an array of m lines each of n
floating point values. Surface data is invariably kept
in its raw form suitable for further processing if re-
quired. The format of the floating format list is not
critical though will typically reflect the array dimen-
sions. Data may be wrapped for improved readability,
for example, in a text editor.
The surface display is modal. Key options chose
between i) the wire geometry tessellated surface, ii)
an opaque surface, with elements coloured as a func-
tion of the surface displacement, or iii) with surface
smoothing (default display mode). The surface colour
gradient, and brightness may be preset as part of the
input file, but also changed interactively at the key-
board. The orientation of the object and light angle
may also be specified as part of the input file. Again
these are controllable from mouse and key combina-
tions. The inclusion of single-line qualifying instruc-
tions in the object data file provide a convenient way
to preset parameters so that a file can be opened to a
preferred view. The current view settings may be out-
put (with std output) to be saved with the object file
to set the new default (opening) view.
3.1.2 Static Graphs
Static connected- or point-graphs may be prescribed
in number of ways. For many situations it is sufficient
to specify graphs “in the plane”, for example, the yx
plane or the zx plane. A y or z object specifier, in-
dicates this accordingly. In either of these graphing
modes, it is sufficient to simply list the data points to
be graphed as a one dimensional array. As with the
surface prescription, the array size parameters appear
in the second line of the header. The array index im-
plicitly defines the x-coordinates. The graph width
is scaled to fit the viewing dimensions specified as
part of the six x-,y-,z- range and offset parameters.
Offsets are used to arrange visual separation between
multiple graphs within the 3D display volume.
Static 3D ’trajectories’, with the x co-ordinate rep-
resenting the time scale for example and y and z
values plotted as a function of array index x, use
the k (‘kurve’) specifier. The ‘kurve’ option allows
for a trajectory to be partitioned interactively and
colour coded according to the segmented regions. The
coloured trajectory may be output (std output) as a
numerically scored graphical object prescription (The
output of S
P
O
D
can in principle be piped to itself to
create a new instance of the display). These rather
specific features, used extensively in our work on
sleep studies, have also been found to be more broadly
applicable, in other engineering related analysis. Al-
ternatively, to plot free-form 3D graphs or points se-
ries, [x
i
], [y
i
], [z
i
], the x specifier is used.
The aforementioned header format is adhered to
across all of the display options. It includes the array
dimensions, as well as the x-,y-,z- range and offsets
respectively. Since static objects are scaled irrespec-
tive of the array size, to ‘fill’ the dimensions indicated
by the ‘scale’ parameters, separate data series may be
compared on the same time scale, irrespective of the
numbers of points in the respective series. This is es-
pecially convenient when looking at multiple data se-
ries generated perhaps using unrelated sampling rates,
but sharing a common time scale.
As mentioned S
P
O
D
currently accepts up to
16,000 static free-form connected graphs in any given
session. There is no reason to see this as hard limit,
but as this number is more than sufficient for our cur-
rent requirements we have not felt the need to go fur-
ther. It would be unusual to wish to display simulta-
neously this number of graphs anyway. More usually
such a set of graphs would be ‘played’ as an animated
sequence to enable convenient observation of dynam-
ical events in the data sets. See Figure 1 as discussed
below.
3.1.3 Dynamic Graphs and Animated Sequences
Dynamic “oscillograph” displays, animated displays
of time-series data and graph sequences, are indi-
cated with upper case object specifiers, X, Y and Z.As
with the y, z specifiers, traces are implicitly graphed
against a time scale (the x-axis), in the yx and zx
planes, respectively. Data arrays may include up-
wards of a million data points. An internal counting
index operates as a pointer into the data array, and a
range-index defines a ‘viewing window size’ on the
trace being displayed. The windowed portion of the
trace is further scaled and offset for display purposes,
in accordance with the header, range and offset para-
meters.
Traces may be displayed statically, or dynamically
at rates considerably in excess of 10,000 points per
second (very much faster than the eye can follow!).
TOWARDS VISUAL-BANDWIDTH: GETTING CLOSE TO ONE’S EXPERIMENT DATA
381