2

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":
http://www.youtube.com/watch?v=5WNNsJRot-Y (RhinoGuide)
http://www.youtube.com/watch?v=yiFFRbyV0DU (digitaltoolbox).

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.

O. Th. B.
  • 320

2 Answers2

2

The idea actually goes back to Bézier's thesis, though it's almost always attributed to Sederberg and Parry: Tom Sederberg and Scott Parry. "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.

bubba
  • 44,617
  • 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. – O. Th. B. 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. – O. Th. B. May 22 '12 at 18:28
1

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. – O. Th. B. May 22 '12 at 08:27
  • 1
    @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. :) –  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. – O. Th. B. May 23 '12 at 08:02
  • 1
    @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 :). –  May 23 '12 at 08:28