Abstract: Frisvad [2012b] describes a widely-used computational method for efficiently augmenting a given single unit vector with two other vectors to produce an orthonormal frame in three dimensions, a useful operation for any physically based renderer. However, the implementation has a precision problem: as the z component of the input vector approaches -1, floating point cancellation causes the frame to lose all precision. This paper introduces a solution to the precision problem and shows how to implement the resulting function in C++ with performance comparable to the original.
Published in: Journal of Computer Graphics Techniques, volume 6, number 1, 2017.
One-line summary: Efficient method to generate a highly accurate orthonormal basis from a given unit vector.
Download paper here: paper.pdf.
Back to Per's publication page.