Represent a circular arc with a rational Bézier curve with prescribed weights of the endpoints

bezier-curveconic sectionsrational-functions

I would like to construct a rational Bézier curve that represents a circular arc of sweep angle less than $180^\circ$. It is clear to me how to construct the control points ($\mathbf{P}_0$ and $\mathbf{P}_2$ are the endpoints and $\mathbf{P}_1$ is determined by the tangents at the endpoints). What I am struggling with is how to find the weight $w_1$ when $w_0$ and $w_2$ are given positive numbers.

The construction in the NURBS book [1] starts from the assumption $w_0 = w_2 = 1$, which simplifies the computation of $w_1$, but differs from what I need: in my case $w_0$ and $w_2$ are prescribed and (in general) different from 1. I tried to adapt the construction to cover my case but there are several steps using symmetries where I am not yet sure whether they directly translate to my situation or I have to do something more involved. The references they provide [2, 3] are behind a paywall as far as I can tell.

I had a look into several other books and online notes (including discussions here on SE) but they all seem to use the same idea. In the handbook of CAGD [4] it is even stated that the choice $w_0 = w_2 = 1$ is without loss of generality (without really explaining, how to obtain the general case) so I think I must be missing something basic.

How can I do it? Would it be enough to construct $w_1$ from the assumption $w_0 = w_2 = 1$ and then modify the weights while keeping $k = \frac{w_0w_2}{w_1}$ constant?Another possibility would be to reparameterize the curve but that I would like to avoid for the time being.


[1] L. Piegl, W. Tiller: The NURBS Book, 2nd edition, Springer, 1997.

[2] E.T.Y. Lee: Rational quadratic Bézier representation for conics, in Geometric Modeling: Algorithms and New Trends, G.E. Farin (ed.), SIAM, pp. 3–19, 1987.

[3] L. Piegl, W. Tiller: Curve and surface constructions using rational B-splines, CAD, vol. 19, no. 9, pp. 485–498, 1987.

[4] G.E. Farin, J. Hoschek, M.-S. Kim: Hanbook of computer aided geometric design, Elsevier, 2002.

Best Answer

See these notes, especially section 3.3.

The key point is that you can change the weights however you like, as long as you keep the quantity $w_0w_2/(w_1)^2$ constant, and the shape of the curve will remain unchanged.

So, you can use the techniques you already know to calculate weights $k_0, k_1, k_2$ that work for your circular arc, with $k_0 = k_2 = 1$. Then, if you have given values of $w_0$ and $w_2$, you calculate $w_1$ so that $$ \frac{w_0w_2}{w_1^2} = \frac{k_0k_2}{k_1^2} = \frac{1}{k_1^2} $$ For the specific case of a 90 degree arc, the standard symmetric solution is $k_0=1$, $k_1 = \tfrac12\sqrt2$, and $k_2=1$. So then you calculate $w_1$ from $$ w_1 = \sqrt{\tfrac12 w_0w_2} $$ You said that you don’t want to reparameterize the curve. I’m not sure what you mean by this, but any change of weights that changes their ratios will change the parameterization of the curve.

The statement that you can set $w_0=w_2=1$ without loss of generality is misleading. You can do this if you only care about the shape of the curve. But if you care about it’s parameterization, too, then you lose generality by making this assumption.