Hi Marius,
I am back to a new 3D project and now wonder, how to interpolate a
surface from which I know the coordinates of about 100 measurment
points? They are taken from the bulge surface of the upper half circle
of a tree trunk.
My First question is, which kind of set to use? I think it should be
Gridded2DSet, because the x and y coordinates would be the domain and z
the manifold dimension?
In 3-D the domain dimension is 3 but for a surface
the manifold dimension is 2.
Defining a surface for your data will be much simpler
if you know that one coordinate is a single-valued
function of the other 2. For example, in a topography
z is a function of x and y.
For a tree trunk, it may make sense to use cylindrical
coordinates: height, theta (angle) and radius (from the
center line of the tree trunk). If you know that radius
is a single-valued function of height and theta (which
seems naively intuitive), then you can construct a
triangular topology in a Delaunay object by passing the
100 (height, theta) pairs to the Delaunay.factory()
method, then passing this Delaunay object to a
Irregular3DSet constructor, along with the 100
(height, theta, radius) triples. This should construct
an Irregular3DSet with manifold dimension = 2.
My second question is, how to interpolate a smooth non-oscillating
surface from this points. It should represents the bulge surface in a
smooth way, so that CAD shapers can reproduce it.
You can interpolate by passing the Delaunay object
and the 100 (height, theta) pairs to an Irregular2DSet
constructor, constructing a FlatField of this with
radius values in the range, then resmapling this to
a Gridded2DSet. You can pull values out of the resampled
FlatField to construct a Gridded3DSet with manifild
dimension = 2.
I am -->very rusty<-- at all this stuff, so caveat
emptor.
Good luck,
Bill