I'm having some trouble with Bézier surfaces and I was hoping someone could help me. Question is rather simple: lets say we have 2 Bézier curves with control points: P00,P10,P20,P30 and second P00,P01,P02,P03. So, we have 2 cubic curves which have one control point (P00) in common. My question is: are those two curves and their control points enough data to construct a Bézier surface? I have studied the formula, and I got the procedure, but what I can not figure out is: can I compute the other control points (P10,P11,P12,P13 and so on), or they must be given as input in order for surface to be defined? And if I can compute them, how? I know this might sound like stupid question but im interested in application of these surfaces, meaning I'm not a mathematician, so i skipped some steps :)

  • $\begingroup$ The man's name was Bézier, not Bezier, and certainly not bezier. I fixed the title; perhaps you could fix the rest. $\endgroup$ – bubba Aug 13 '14 at 3:56

If $\mathbf{A}: [0,1] \to \mathbb{R}^3$ and $\mathbf{B}: [0,1] \to \mathbb{R}^3$ are any two parametric curves whatsoever, and $\mathbf{A}(0) = \mathbf{B}(0) = \mathbf{C}$, then you can define a surface $\mathbf{S}(u,v)$ by $$ \mathbf{S}(u,v) = \mathbf{A}(u) + \mathbf{B}(v) - \mathbf{C} \quad\quad (0 \le u \le 1 \; ; \; 0 \le u \le 1) $$ Note that $\mathbf{S}(u,0) = \mathbf{A}(u)$ for all $u$, so one edge of this surface is the curve $\mathbf{A}$. Similarly, $\mathbf{S}(0,v) = \mathbf{B}(v)$ for all $v$, so the adjacent edge is the curve $\mathbf{B}$.

Conceptually, the surface is formed by "sweeping" the curve $\mathbf{A}$ along the curve $\mathbf{B}$, keeping its orientation fixed. Or, equivalently, you can sweep $\mathbf{B}$ along $\mathbf{A}$; the situation is symmetric, so you'll get the same result either way. These things are sometimes known as "translational sweep surfaces" in the literature. See, for example "The NURBS Book" by Piegl and Tiller, section 10.4.

Now the specific case of cubic Bézier curves that you asked about.

Suppose $\mathbf{A}$ is a cubic Bézier curve with control points $\mathbf{P}_{0}$, $\mathbf{P}_{1}$, $\mathbf{P}_{2}$, $\mathbf{P}_{3}$, and $\mathbf{B}$ is a cubic Bézier curve with control points $\mathbf{Q}_{0}$, $\mathbf{Q}_{1}$, $\mathbf{Q}_{2}$, $\mathbf{Q}_{3}$. And let's assume that $\mathbf{P}_{0} = \mathbf{Q}_{0} = \mathbf{C}$, so that the curves have a common start point. Then the translational sweep surface described above is actually a bicubic Bézier surface, and its 16 control points $\mathbf{R}_{ij}$ are given by: $$ \mathbf{R}_{ij} = \mathbf{P}_{i} + \mathbf{Q}_{j} - \mathbf{C} \quad \quad (i = 0,1,2,3\; ; \; j = 0,1,2,3) $$ Here's an example of a simple surface produced this way:

enter image description here

There are many other ways to define a surface from two curves. For example, as you are sweeping one curve along the other, you can rotate it in some way, rather than keeping its orientation fixed.

  • $\begingroup$ ,firstly I would like to apologize for speling errors,couldnt belive what I wrote when read your editing :).Thanks for the answer,but I had something else in mind,although this helps too.I wanted to define this surface similar like I did with curves,that is through Bernstain polynomials,where control points would be coefficients,so my real problem is how can I get values of the control points in the "interior" (meaning not on the edge curves) of the surface?Also,I am using NURBS book,because NURBS geometry is my primary field of interest,but could not figure it out form there $\endgroup$ – python starter Aug 13 '14 at 15:52
  • $\begingroup$ ,oh sorry I just read your answer carefully and I think I found what I need,I just have to test it now.Thank you very much $\endgroup$ – python starter Aug 13 '14 at 15:55
  • $\begingroup$ The things I called $\mathbf{R}_{ij}$ are the interior control points you need. $\endgroup$ – bubba Aug 13 '14 at 23:13
  • $\begingroup$ Yeah i saw after i posted the question/comment....thanks for the answer $\endgroup$ – python starter Aug 14 '14 at 20:42

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.