Approximate implicitization by point sampling & estimated normals

The approximate implicitization method, developed by the project partner at Johannes Kepler university `Linz', has been implemented in C++. We are planning to make the source code available as Open Source, from the project web page.

The `Linz' method is characterized by the simultaneous approximation of:

Sampled point data p_{i} (x_{i}, y_{i}, z_{i})

Estimated normals n_{i} at these points.

The method produces an approximate implicit representation of the form f(x, y,z) = ∑ (C_{i}B_{i}(x, y, z)) with basis B_{i}(x, y, z) and a certain coefficients C_{i}.

This method is fully general, i.e., it can be applied to any space of functions. For practical applications, however, fast evaluation of basis functions is important. For this reason we implemented the algorithm for using only polynomial function, namely, Tetrahedral Bèzier polynomial, Tensor product Bèzier polynomial, and Tensor product B-splines piecewise polynomials.

We implemented a prototype which is used as a stand alone version for experimental purposes. It can be run from a Linux shell using the parameters:

<file> the input file including the full patch Offset an integer switch whether to approximate an offset surface, set to be 0 (no offset) 1 (offset one side), 2 (offset double sides) OffsetDistance the offset distance in the case of offset surface. Basis an integer set to be 1 (Tensor product B-splines) , 2 (Tensor product Bèzier) or 3 (Tetrahedral Bèzier) Degree the degree of the basis [nonstop] an integer switch the user input from the keyboard during the running. [debug] an integer control the debug message: 0 no, 1 part, 2 full.