Sleek surface building without misplaced extremes based on the finite discrete point set.
It is an implementation of an algorithm described in this paper.
This algorithm gets finite discrete set of 3D points distributed by regular grid as input and builds 3D surface that looks sleek and in the same time has no misplaced extremes and no oscillations.
The core of this algorithm is tbezierSO0 routine that builds sleek curve without misplaced extremes. This routine is used to create a set of intersecting curves and then the surface is built as a set of joint bicubically blended Coons patches. The normals are calculated using smoothing groups algorithm and then additionally smoothed using Gaussian filter. The result surface has both high visual quality and high accuracy.
Written by Konstantin Ryabinin and Konstantin Matkin under terms of MIT license.
You can compile the test application just by calling make
.
The file main.cpp
contains the hardcoded testing dataset described in the original paper. For testing purposes, the application prints to console the surface vertex data in the Wavefront OBJ format. So, you can run it as follows:
./main > out.obj
After that, you can view out.obj
in some 3D model viewer, for example, import it in Blender.