Werner Benger, Andrew Hamilton, Mike Folk, Quincey
Koziol, Simon Su, Erik Schnetter, Marcel Ritter, Georg Ritter
A "vector" in 3D computer graphics is commonly
understood as three floating point numbers, equipped with a set of functions
operating on them. This hides the fact that there are actually different kinds
of vectors, each of them with different algebraic properties and consequently
different sets of functions. We discuss what meta-information is required to
identify a specific type of vector and review the various types within the
terminology of Differential Geometry and Geometric Algebra. We will elaborate on
less known facts about the use of bi-quaternions in relativity, and show these
concepts used in two independently developed computer graphic software packages,
easing implementation and intuition significantly. Another application example
is given by a simulation code solving Einstein's equation numerically on
supercomputers. We will also describe how the metadata information required per
"vector" can be provided in persistent storage, such as for writing datasets of
vectors archived within files. A standard way of expressing geometric properties
of non-scalar (vector or tensor) values can prevent conversion errors, similar
to the way in which the IEEE standard enables sharing floating point values. We
will give concrete examples on how to formulate vector properties, and discuss
the benefits and potential of this approach.