It is assumed that the surface is represented as the zero LS of function and a ray with direction passes through point

In order to find the intersection with the surface, the following equation must be solved

(B.2) |

It is essential for ray tracing, that this equation can be solved with as few numerical operations as possible. Optimized algorithms are presented in the following, which are superior to those reported in the literature [69,74,88,119].

The LS function is usually multi-linearly interpolated within a grid cell. The index vector of a grid cell is defined to be equal to the lower bound indices of all its corner grid points. For an arbitrary number of dimensions , the multi-linear interpolation formula within the grid cell with index vector can be expressed as

This expression can be expanded to a multi-variate polynomial

where are its coefficients. They can be obtained by rewriting (B.3) as

(B.5) |

and further as

(B.6) |

Hence, the coefficients can be calculated as

(B.7) |

If the coefficients are calculated in a straightforward manner, additions or subtractions are needed [69,119]. However, the number of numerical operations can be reduced to subtractions as demonstrated in Algorithm B.1. The algorithm is realized using template metaprogramming [2] which allows for the elimination of all recursive function calls at compile time. An array of size , which contains the LS values of all corner grid points in lexicographical order (with reversed significance), is passed to the static member function. After the function call the same array holds the coefficients in lexicographical order (again with reversed significance) with respect to .

Otmar Ertl: Numerical Methods for Topography Simulation