# Re: [visad] HowTo do a smooth surface interpolation from sample 3D points?

```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

```
• 2011 messages navigation, sorted by:
• Search the `visad` archives: