A library for evaluating transfinite surfaces.
Basic geometry is provided by the libgeom library (included as a submodule).
Currently the following transfinite surfaces are supported:
- Side-based (SB) patch (a variation of Kato's patch)
- Corner-based (CB) patch (a variation of the Charrot-Gregory patch)
- Generalized Coons (GC) patch
- Composite Ribbon (CR) patch
- Midpoint (MP) patch
- Midpoint Coons (MC) patch
- C0 Coons patch
- Elastic patch (see M. Sabin: Further transfinite surface developments, 1998)
Some control point based surfaces are also contained in the library:
- Generalized Bézier (GB) patch
- Corner-based variation of the GB patch
- S-patch
There are also a couple of discrete surfaces:
... and also some experimental representations.
Usage example is provided in src/test/test.cc
, but it follows the pattern
CurveVector curves; // std::vector of (shared pointers to) B-spline curves
// fill curves ...
SurfaceMidpointCoons surf;
surf.setCurves(curves);
surf.setupLoop();
surf.update();
auto p = surf.eval({0.1, 0.3}); // evaluates the surface at a given (2D) domain point
auto mesh = surf.eval(30);
// mesh is a triangle mesh with 30 triangles on each sides