# Deformation of 3D objects along curve or surface?

This is a general question regarding the problem of deforming or forcing some 3-dimensional mathematical shape to flow along some 3D curve or surface.

What kind of mathematics would one need to describe deforming any object around, say, a cylinder of radius $r$? Is there a general function for applying such a process to any shape, B-spline surface or polyhedra (not taking into account physical parameters such as elasticity)?

I know that the CAD software Rhino 3D has built-in functions "flow along curve" and "flow along surface":

I am looking for some hints on how to achieve such operations were the target 3D curve is, say, a circle, without the use of CAD software. This could be tutorials online, math examples, DOIs for good papers on the subject, etc., etc.

I have tried myself once with flowing a function around a circle in 2D. For me it seemed like it was just a change of coordinates: You just express the coordinates in spherical coordinates, the x-cordinates will the flow around radially and the y-coordinate is the length of the arc. But I am looking for the general mapping solution.

-

The idea actually goes back to Bezier's thesis, though it's almost always attributed to Sederberg and Parry (Sederberg, Thomas and Parry, Scott. "Free Form Deformation of Solid Geometric Models." SIGGRAPH, Association of Computing Machinery. Volume 20, Number 4, 1986. 151-159). Google their original paper -- easy to find). Many CAD packages are essentially just implementing these old ideas. Intuitively, you embed your target object in a cube of jello, and deform the jello, and this carries your object along with it. Or, for bending deformations, you do essentially what you described -- "attach" your object to a straight line, and bend the line, which bends your object, too. As you say, it's not much more than a change of coordinates.

There's a huge amount of literature on the subject. Look up "free-form deformation". The wikipedia entry is pretty miserable, but the references it gives are quite good.

-
Thanks. I took a look at the paper, and I have actually seen it before, some years ago. I find it fascinating what they were doing already in 1986 - wonder how long it took to raytrace the included graphics :) I was taken aback by the math in the paper back then and I still am. I think I will try with the simpler "change of coordinate" approach. Or just use Rhino 3D. – Ole Thomsen Buus May 22 '12 at 14:22
> I find it fascinating what they were doing already in 1986 ... well Pierre Bezier was probably doing it in 1966, but he hardly ever gets credit for it. – bubba May 22 '12 at 14:51
The CAD software with the strongest capabilities in this area is probably Think3. Better hurry, though -- I get the impression that the company is on its last legs. – bubba May 22 '12 at 14:54
Well, a mathematical description of splines were named after him... that's credit after all. The Think3 website currently looks ... sad. – Ole Thomsen Buus May 22 '12 at 18:28

This is too long for a comment, so I'm posting an answer. There doesn't seem to be a definite answer, nor do I claim that what is suggested below is the most computationally optimal way of accomplishing the task, but it is the first thing that comes to mind:

Let $O$ be a 3D object that we wish to flow along a surface $S$. Let us assume that $S$ is the image under some map $F$ of a plane $\Pi$. For simplicity, we don't care about specific orientation of $O$. Foliate $O$ by copies of $\Pi$ along the direction perpendicular to $\Pi$, say along some line segment $l\subset O$. Then $O = O\bigcap \left[\cup_{p\in l}\Pi_p\right]$ where $\Pi_p$ is the plane passing through $p$. Now define $\widetilde{F}: \bigcup_{p\in l}\Pi_p \rightarrow\mathbb{R}^3$ by $\widetilde{F}(\pi, p) = (F(\pi), p)$, where $\pi$ is a point on $\Pi_p$. Then $\widetilde{O} := \widetilde{F}(O)$ is the object $O$ "flow along" the surface $S$. Notice in particular that $\widetilde{F}(\bigcup_{p\in l}\Pi_p) = \bigcup_{p\in l}S\times\{p\}$.

-
Thank you very much, but it did not help. I am an engineer :) What I was looking for was actually one of those very useful encyclopedic answers. I would imagine that since CAD programs are working directly with naturally sub-divided shapes ( triangular meshes or patches of NURBS-surfaces) any governed deformation becomes easier somehow. – Ole Thomsen Buus May 22 '12 at 8:27
@Ole: I just read what is described in the other answer. Maybe I'm missing something, but in my answer I am saying exactly the same thing in a mathematically formal way. :) – William May 22 '12 at 18:34
I believe it is the "foliate" word that confuses me. I am sure that you were sincere in your answer, it is just a bit too mathematical for me. You also define $O = O\bigcap \left[\cup_{p\in l}\Pi_p\right]$ ... is there a mathematical shortcut there? Not sure how to even interpret that set construct. – Ole Thomsen Buus May 23 '12 at 8:02
@Ole: No no, I am not defining $O$ that way; $O$ has already been defined. I am saying that $O$ sits inside of the three-dimensional space that is sliced up into planes $\Pi_p$. Basically, you can think of a foliation as a stack of layers. This is a formal way of saying that $O$ is immersed in a cube of jello, in bubba's words, where the cube is made up of layers, which I'm calling $\Pi_p$. Anyway, it's OK, no offense was taken on my part :). – William May 23 '12 at 8:28