Rational Quadratic Bézier
This was a homework question from the class that I found interesting. The method I outline here is different from what Dr. Wang outlined in class.
Question 1§
Circular Arc – Let $\mathcal{C}$ be the unit circle centred at the origin and $A, B \in \mathcal{C}$ be endpoints of an arc subtending a central angle of $\theta \in (0, \pi).$
Represent this circular arc as a rational quadratic Bézier curve
$$ P(t) = \frac{(1-t)^2 P_0 + 2 w t (1-t) P_1 + t^2 P_2}{(1-t)^2 + 2 w t (1-t) + t^2},\ t \in [0, 1]. $$
Give control points $P_0, P_1, P_2$ and weight $w$, show that $w = \cos(\theta / 2)$.
Solution§
As the circular arc has endpoints $A, B$, we set $P(0) = A, P(1) = B$ implying that $P_0 = A, P_2 = B$
As $A$ and $B$ are points on the circle, there must be angles $\alpha$ and $\beta$, respectively, that represent the angle of the point along the unit circle, i.e. $P_0 = A = \langle\cos\alpha, \sin\alpha\rangle$, $P_2 = B = \langle\cos\beta, \sin\beta\rangle$, and the subtended angle is $\theta = \beta - \alpha$ (assuming, wlog., $\beta > \alpha$).
The curve at $t=0.5$ should represent the midpoint of the circular arc $M$, $$ \begin{align*} P(0.5) = M &= \frac{0.25P_0 + 0.5wP_1 + 0.25P_2}{0.5 + 0.5w}\\ &= \frac{0.5P_0 + wP_1 + 0.5P_2}{1+w}\\ (1+w)M &= \frac{1}{2}(P_0 + P_2) + wP_1\\ (1+w)M - wP_1 &= \underbrace{\frac{1}{2}(P_0 + P_2)}_{X}. \end{align*} $$
The above implies that $X$, $M$, and $P_1$ are colinear which allows them to be expressed as scalar multiples of one another, i.e. $P_1 = zM = zkX$, yielding the constraint $$ \|X(1 - wk - wzk)\| = (1 - wk - wzk)\|X\| = 1. \tag{\dag} $$
As $M$ is a scalar multiple of $X$, their magnitudes are also scalar multiples, allowing us to solve for $k$ in $\|M\| = \|kX\| = 1$ implying $k = \|X\|^{-1}$. From the illustration, we have that $\angle{XOP_0} = \theta / 2$ giving $\cos(\theta / 2) = \|X\|$ and $k = \sec(\theta / 2)$.
Next, notice that $\|P_1\| = \|zM\| = z\|M\| = z$ is equivalent to finding $\|X\| + \|\overline{XP_1}\|$.
$\|X\|$ was found previously, and $\|\overline{XP_1}\|$ can be found using trigonometry — it is the length $\overline{XP_0}$ times the tangent of the angle $\angle P_1P_0X = \gamma$.
To find $\gamma$, we can use the fact the inner product of two direction vectors is proportional to the cosine of the angle, or $\cos\theta = (A \cdot B) / (\|A\|\|B\|)$.
The direction of $\overline{P_1P_0}$ is given by the tangent of the circle at $P(0)$ by definition of the Bézier curve, and the direction of $\overline{P_0P_2}$ is the difference between points.
$$ \begin{align*} \gamma &= \arccos\left(\frac{P’(0) \cdot \overline{P_0P_1}}{\|P’(0)\|\|\overline{P_0P_1}\|}\right)\\ &= \arccos\left(\frac{\langle -\sin\alpha, \cos\alpha\rangle \cdot \langle \cos\beta - \cos\alpha, \sin\beta - \sin\alpha \rangle}{\|\langle \cos\beta - \cos\alpha, \sin\beta - \sin\alpha \rangle\|}\right)\\ &= \arccos\left(\frac{-\sin(\alpha)(\cos\beta - \cos\alpha) + \cos(\alpha)(\sin\beta - \sin\alpha)}{\sqrt{(\cos\beta - \cos\alpha)^2 + (\sin\beta - \sin\alpha)^2}}\right)\\ &= \arccos\left(\frac{\cos\alpha\sin\beta - \sin\alpha\cos\beta}{\sqrt{2 - 2\cos(\beta - \alpha)}}\right)\\ &= \arccos\left(\frac{\sin(\beta - \alpha)}{\sqrt{2 - 2\cos(\beta - \alpha)}}\right)\\ &= \arccos\left(\left\|\frac{\sin(\beta - \alpha)}{\sqrt{2 - 2\cos(\beta - \alpha)}}\right\|\right)\tag{$\gamma \in \mathbb{R}^{+}$ by construction}\\ &= \arccos\left[\sqrt{\left(\frac{1}{\sqrt{2}}\cdot\frac{\sin(\beta - \alpha)}{\sqrt{1 - \cos(\beta - \alpha)}}\right)^2}\right]\tag{definition of abs. value}\\ &= \arccos\left[\sqrt{\frac{1}{2}\cdot\frac{\sin^2(\beta - \alpha)}{1 - \cos(\beta - \alpha)}}\right]\\ &= \arccos\left[\sqrt{\frac{1}{2}\cdot\frac{1 - \cos^2(\beta - \alpha)}{1 - \cos(\beta - \alpha)}}\right]\tag{using $\cos^2\theta + \sin^2\theta = 1$}\\ &= \arccos\left[\sqrt{\frac{1}{2}\cdot\frac{(1 - \cos(\beta - \alpha)) (1 + \cos(\beta - \alpha))}{1 - \cos(\beta - \alpha)}}\right]\tag{difference of squares}\\ &= \arccos\left[\sqrt{\frac{1 + \cos(\beta - \alpha)}{2}}\right]\tag{half angle identity}\\ &= \arccos\left[\cos\left(\frac{\beta - \alpha}{2}\right)\right]\\ &= \frac{\beta - \alpha}{2}\\ &= \theta / 2 \end{align*} $$
Solving for $z$, $$ \begin{align*} \|P_1\| = z &= \|X\| + \|\overline{XP_0}\|\tan\gamma\\ &= \cos(\theta / 2) + \sin(\theta / 2)\tan(\theta / 2)\\ &= \sec(\theta / 2). \end{align*} $$ Plugging $z = k = \sec(\theta / 2)$ into ($\dag$) gives $$ \begin{align*} 1 &= (1 - wk - wzk)\|X\|\\ &= \left[1 - w\sec(\theta / 2) - w\sec^2(\theta / 2)\right]\cos(\theta/2)\\ \sec(\theta/2) &= 1 - w\sec(\theta / 2) - w\sec^2(\theta / 2)\\ 1 &= \cos(\theta / 2) - w - w\sec(\theta / 2)\\ \cos(\theta / 2) + 1 &= w + w\sec(\theta / 2)\\ \cos(\theta / 2) + 1 &= w(1 + \sec(\theta / 2))\\ w &= \frac{\cos(\theta / 2) + 1}{\sec(\theta / 2) + 1}\\ w &= \cos(\theta / 2) \end{align*} $$ Therefore, $P_0 = A, P_1 = \frac{1}{2}\sec^2(\theta / 2) (A + B), P_2 = B, w = \cos(\theta / 2)$.
Problem 2§
Semi-circle – Represent the semi-circle $x^2 + y^2 - 1 = 0, y \geq 0$ as a rational quadratic Bézier curve.
Solution§
Plugging in the results from part A, we get the following expression $$ P(t) = \frac{(1-t)^2 P_0 + \sec(\theta / 2) t (1-t) (P_0 + P_2) + t^2 P_2}{(1-t)^2 + 2 \cos(\theta / 2) t (1-t) + t^2},\ t \in [0, 1]. $$ Taking the limit as $\theta \to \pi$ yields an expression for representing the semi-circle with the rational Bézier, $$ \begin{align*} \lim_{\theta \to \pi} P(t) &= \lim_{\theta \to \pi}\frac{(1-t)^2 P_0 + \sec(\theta / 2) t (1-t) (P_0 + P_2) + t^2 P_2}{(1-t)^2 + 2 \cos(\theta / 2) t (1-t) + t^2}\\ &= \frac{\lim_{\theta \to \pi} (1-t)^2 P_0 + \sec(\theta / 2) t (1-t) (P_0 + P_2) + t^2 P_2}{\lim_{\theta \to \pi} (1-t)^2 + 2 \cos(\theta / 2) t (1-t) + t^2} \end{align*} $$ The denominator $\lim_{\theta \to \pi} (1-t)^2 + 2 \cos(\theta / 2) t (1-t) + t^2$ can be solved directly and equals $ (1-t)^2 + t^2$.
Next, we focus on solving the numerator by making the assumptions $P_0 = \langle \cos\alpha, \sin\alpha \rangle$ and $P_2 = \langle \cos\beta, \sin\beta \rangle$ with the subtended angle $\theta = \beta - \alpha$ and $\beta > \alpha$. With these assumptions, the limit as $\theta \to \pi$ is the same as the limit as both $\alpha \to 0$ and $\beta \to \pi$.
With these assumptions, the numerator is rewritten as $$ \begin{align*} &(1-t)^2\lim_{\alpha \to 0} \langle \cos\alpha, \sin\alpha\rangle\\ &\quad+ t (1-t) \lim_{(\alpha, \beta) \to (0, \pi)} \sec\left(\frac{\beta - \alpha}{2}\right) \left\langle \cos\alpha + \cos\beta, \sin\alpha + \sin\beta\right\rangle\\ &\quad+ t^2 \lim_{\beta \to \pi} \langle\cos\beta, \sin\beta\rangle. \end{align*} $$ Now we focus on the second limit as it is problematic due to $\lim_{\theta \to \pi / 2} \sec\theta$ being indeterminant. $$ \begin{align*} &\lim_{(\alpha, \beta) \to (0, \pi)}\sec\left(\frac{\beta - \alpha}{2}\right) \left\langle \cos\alpha + \cos\beta, \sin\alpha + \sin\beta\right\rangle\\ =&2\lim_{(\alpha, \beta) \to (0, \pi)}\sec\left(\frac{\beta - \alpha}{2}\right) \left\langle \cos\left(\frac{\alpha + \beta}{2}\right)\cos\left(\frac{\alpha - \beta}{2}\right), \sin\left(\frac{\alpha + \beta}{2}\right)\cos\left(\frac{\alpha - \beta}{2}\right)\right\rangle\\ =&2\lim_{(\alpha, \beta) \to (0, \pi)}\sec\left(\frac{\beta - \alpha}{2}\right) \left\langle \cos\left(\frac{\alpha + \beta}{2}\right)\cos\left(\frac{\beta - \alpha}{2}\right), \sin\left(\frac{\alpha + \beta}{2}\right)\cos\left(\frac{\beta - \alpha}{2}\right)\right\rangle\\ =&2\lim_{(\alpha, \beta) \to (0, \pi)}\left\langle \cos\left(\frac{\alpha + \beta}{2}\right), \sin\left(\frac{\alpha + \beta}{2}\right)\right\rangle\\ =&\ 2\Big\langle\cos\left(\frac{\pi}{2}\right), \sin\left(\frac{\pi}{2}\right)\Big\rangle\\ =&\ 2\langle 0, 1\rangle \end{align*} $$ Finally, the semi-circle is represented by the following rational quadratic Bézier curve $$ P(t) = \frac{(1-t)^2\langle 1, 0\rangle + 2t(1-t) \langle 0, 1\rangle + t^2 \langle -1, 0\rangle}{(1-t)^2 + t^2}. $$