Bezier曲线存在的问题
Bézier曲线无法表示圆弧!
Evaluation of \((𝒙^𝟐+𝒚^𝟐)\) for points on the Bezier curve
投影几何
齐次坐标:\(x\longrightarrow \binom{wx}{w} \)
例如:
- 2D case:
$$ \binom{x}{y} →\begin{pmatrix}wx \\wy \\w \end{pmatrix} $$
- 3D case:
$$ \begin{pmatrix}x \\y \\z \end{pmatrix} →\begin{pmatrix}wx \\wy \\wz \\w \end{pmatrix} $$
用欧式坐标表达的空间称为欧氏空间。用齐次坐标表达的空间称为投影空间
构造有理Bezier曲线
基本形式
构造\(\mathbb{R} ^n\)空间中的d阶有理Bezier曲线
(1)在\(n+1\)维空间定义 d阶Bezier 曲线
$$ 𝒇^{(hom)}(t)=\sum_{i=0}^{n}B_i^{(d)}(t)P_i,P_i\in \mathbb{R} ^{n+1} $$
(2)把最后一个维度作为齐次项
(3)再通过除法映射到\(n\)维,得到欧氏空间的曲线n
$$ 𝒇^{(eucl)}(t)=\frac{\sum_{i=0}^{n}B_i^{(d)}(t)\begin{pmatrix}p_i^{(1)} \\\cdots \\p_i^{(n)} \end{pmatrix}}{\sum_{i=0}^{n}B_i^{(d)}(t)P_i^{(n+1)}} $$
一般形式
每个控制顶点上设置一个权系数
$$ {f}^{(eucl)} (t)=\frac{\sum_{i=0}^{n}B_i^{(d)} (t)w_ip_i}{\sum_{i=0}^{n}B_i^{(d)} (t)w_i } $$
$$ p_i=\begin{pmatrix}p_i^{(1)} \\\cdots \\p_i^{(n)} \end{pmatrix} $$
另一种形式
$$ {f}^{(eucl)} (t)=\sum_{i=0}^{n}p_i =\frac{B_i^{(d)} (t)w_i}{\sum_{i=0}^{n}B_i^{(d)} (t)w_i } =\sum_{i=0}^{n}q_i(t)p_i $$
with \(\sum_{i=0}^{n} q_i(t)=1\)
如权系数都相等,则退化为Bezier曲线
也可以看作是权函数\(q_i(t)\)变成了有理形式的权函数。
有理Bezier曲线的几何解释
几何解释
高维的Bezier曲线的中心投影
3D空间中的多项式曲线投影到2D有可能是圆。因为3D坐标到2D坐标的转换要经过一个除法。
数学上的有理是带分母的意思。
2次有理Bezier曲线表示圆
权系数对曲线形状的影响
控制顶点的权系数越大,曲线就越靠近该点
调整控制顶点的位置或权重都能控制曲线。
有理Bezier曲线的性质
具有Bezier曲线的大部分性质(设\(w_i>0,i=1\sim n\)):
• 端点插值
• 端点切线
• 凸包性
• 导数递推性
• de Casteljau作图算法
• …
本文出自CaterpillarStudyGroup,转载请注明出处。 https://caterpillarstudygroup.github.io/GAMES102_mdbook/