2
$\begingroup$

I have a set of several closed curves in 3d (like image below is showing my set of curves from 3 views). enter image description here

To clarify my idea, i ask my questions in two different ways showed by diction 1 and diction 2 in next. Both questions are same, and I'm bringing them just for explaining what I need.

diction 1- Each closed curve is consist of many points and all points in each curve have same height. Calculating any of these curves is a time consuming task, so i would like to know is there a method to interpolate between two successive curve and make a new curve instead of calculating it from the time consuming task?

diction 2- You can see in image every closed curve have same height in every point of it. (because of perspective view, the side view seems is not so, but in real it is). Is there a method to approximate a curve between two successive curves with only data of those two curves? For example think we remove 7'th curve (counting from down to up) and we want to approximate it with data of 6'th curve and 8'th curve. Is there a method to do so?

- Update - in many CAD/CAM applications there is a command named Loft which will create a surface from several curves like this image (from this page) enter image description here

What is the math behind the Loft operation?

$\endgroup$
2
$\begingroup$

This is a question that is not easy to answer as there are multiple ways to achieve what you want but none of them is easy to implement. So, here I can only give some general description about the algorithm and you will have to do more research (try google on "surface reconstruction from planar contours") on your own.

The first way is to construct triangle facets between two successive curves. For each two successive points in the upper curve, they will be connected to a point in the lower curve, thus forming a triangle facet. Similarly, every two successive points in the lower curve will be connected to a point in the upper curve, forming another triangle. There are many different criteria to choose how to match points between upper curve and lower curve. Once all the points are used in both curves, we have a collection of triangle facets that fill up the space between the two curves. Repeat the process for every two successive curves and we will have a polygon mesh that interpolate all the curves. Then, finding new curves is just a matter of intersecting a plane at known z value with the polygon mesh.

The 2nd way is to fit each curve (consist of many points) by a B-spline curve (cubic is preferred), then create lofting surface thru all the fitted B-spline curves. Once you have the lofting surface, intersect it with a plane at known z value to get the interpolating curve.

$\endgroup$
1
$\begingroup$

I think this can be reduced to the 1d interpolation problem. How are the curves given to you? In a trivial example of surface of revolution, when the curves are circles, we interpolate the radius along the z-axis. In any case, we could discretize any given free-form closed curves by sampling radius at equal polar angles in the cross-sections. Then we interpolate resulting radius arrays along z, by polynomial or spline methods, obtaining a vector-valued interpolant s(z).

$\endgroup$
  • $\begingroup$ The curves are not necessarily circle or even line circle. example is in my question which is best ever possible case regarding circularity of my curves, but other cases can be quite terrible! $\endgroup$ – epsi1on Jan 20 '15 at 10:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.