参数化表示
空间曲线曲面常用参数化表示,即: x = x ( u ) , y = y ( u ) , z = z ( u ) x=x(u),y=y(u),z=z(u) x=x(u),y=y(u),z=z(u)。用位置矢量形式表示就是 p = p ( u ) p=p(u) p=p(u),其中参数u可能有意义,也可能没有意义,例如对于 p = [ c o s θ , s i n θ ] p = [cos\theta, sin\theta] p=[cosθ,sinθ]中的 θ \theta θ有意义, x = a 0 + a 1 u + a 2 u 2 x=a_0+a_1u+a_2u^2 x=a0+a1u+a2u2中的u就没有意义。
同一曲线可以有多种不同参数化表示,区别在于曲线上的点和参数域的点对应关系不同。例如 p = u p 1 + ( 1 − u ) p 0 p=up_1+(1-u)p_0 p=up1+(1−u)p0和 p = u 3 p 1 + ( 1 − u 3 ) p 0 p=u^3p_1+(1-u^3)p_0 p=u3p1+(1−u3)p0,曲线是一样的,对参数域u同样划分为100等分,但是画出来密度是不一样的:
位置矢量对参数u求导,得到的导数向量称为导矢 p ˙ = [ d x d u , d y d u , d z d u ] \dot{p}=[\frac{dx}{du},\frac{dy}{du},\frac{dz}{du}] p˙=[dudx,dudy,dudz]。如果对一个曲线进行参数化,参数域内一阶导矢处处不为零,称为正则曲线。
注意,向量的一阶导矢是曲线的切线方向,向量的各阶导矢方向不一定相同。如果向量在某处一阶导矢为0,那么它的切线方向由最低阶不为零导矢方向确定
设曲线弧长微分为 d s ds ds,则弧长微分计算:
d s = d p 2 = d x 2 + d y 2 + d z 2 = d p d u 2 d u = ∣ p ( u ) ˙ ∣ d u \begin{aligned} ds & = \sqrt{dp^2} = \sqrt{dx^2+dy^2+dz^2}\\ & = \sqrt{\frac{dp}{du}^2}du = |\dot{p(u)}|du \end{aligned} ds=dp2=dx2+dy2+dz2=dudp2du=∣p(u)˙∣du
根据上面ds的计算方法可以得知,位置矢量对曲线弧长求导,得到的一阶导矢,是单位矢量。
对于单位矢量 ∣ α ∣ = 1 |\alpha|=1 ∣α∣=1,则求导得 α α ′ = 0 \alpha \alpha^{\prime}=0 αα′=0,所以单位矢量的导数 β = α ′ ∣ α ′ ∣ \beta=\frac{\alpha^{\prime}}{|\alpha^{\prime}|} β=∣α′∣α′一定是垂直于它本身。再取他们的叉积得到 γ = α × β \gamma=\alpha \times \beta γ=α×β,三个单位矢量称为曲线的基本矢量。
其中 α \alpha α和 β \beta β组成的平面称为密切面, α \alpha α和 γ \gamma γ组成的平面称为从切面, γ \gamma γ和 β \beta β组成的平面称为副法面
图片来自施法中老师的《计算机辅助几何涉及与非均匀有理B样条》一书的21页
其中 κ = ∣ p ˙ × p ¨ ∣ ∣ p ˙ ∣ 3 \kappa = \frac{|\dot{p} \times \ddot{p}|}{|\dot{p}|^3} κ=∣p˙∣3∣p˙×p¨∣为曲率, τ \tau τ为挠率
计算弧长:
s ( u ) = ∫ u 0 u d s d u d u = ∫ u 0 u ∣ p ( u ) ˙ ∣ d u = ∫ u 0 u [ x ( u ) ˙ ] 2 + [ y ( u ) ˙ ] 2 + [ z ( u ) ˙ ] 2 d u \begin{align} s(u) & = \int_{u_0}^{u} \frac{ds}{du}du = \int_{u_0}^{u}|\dot{p(u)}|du \\ & = \int_{u_0}^{u} \sqrt[]{[\dot{x(u)}]^2+[\dot{y(u)}]^2+[\dot{z(u)}]^2} du \end{align} s(u)=∫u0ududsdu=∫u0u∣p(u)˙∣du=∫u0u[x(u)˙]2+[y(u)˙]2+[z(u)˙]2du
因为s代表弧长,随着u的增大,单调递增,所以存在反函数 u = u ( s ) u=u(s) u=u(s)。所以就得到了以曲线自身弧长为参数的曲线方程: p = p ( u ( s ) ) p=p(u(s)) p=p(u(s)),如果以s为参数,则 p = p ( s ) p=p(s) p=p(s),称为曲线的自然参数方程,弧长s称为自然参数,自然参数方程在轨迹规划中比较常用,在速度规划时,往往以ds为步进长度,计算对应的参数u进一步得出位置矢量p。
曲线/曲面连续性
- 参数连续性:对于函数曲线,如果曲线上一点具有相等的直到k阶的左右导数,那么称这个点是 C k C^k Ck连续的。对于参数曲线,如果在一点处具有直到k阶的连续导矢,称这个点为 C k C^k Ck连续。在几何上 C 0 , C 1 , C 2 C^0,C^1,C^2 C0,C1,C2连续体现为:该点处图形连续,切线连续,曲率连续。
- 几何连续性:如果两个曲线相应的弧长参数化在公共连接点具有 C k C^k Ck连续,那么它们在该点处具有 G k G^k Gk连续性。 G 0 , G 1 , G 2 G^0,G^1,G^2 G0,G1,G2体现为图形连续,一阶导矢方向连续 p 1 ( u ) ˙ = k p 2 ( u ) ˙ \dot{p_1(u)} = k\dot{p_2(u)} p1(u)˙=kp2(u)˙,二阶导矢方向连续 p 1 ( u ) ¨ = k p 2 ( u ) ¨ \ddot{p_1(u)} = k\ddot{p_2(u)} p1(u)¨=kp2(u)¨。
- 还有几种等价的定义,在书上第六章175页,自行查看。其中beta约束那个定义挺有意思的。/
简而言之,几何连续性体现曲线的光顺性,参数连续性体现曲线的可微性,对于 C 0 C^0 C0和 G 0 G^0 G0二者是一样的。几何连续性与参数的选取无关,参数连续性与参数的选择也有关系。相同阶数下,几何连续性对自由度的约束更小。
样条
为了模拟物理样条形成的曲线,在力学上,物理样条处于应变能最小的状态,数学表示为 E = B ∫ κ 2 d s E=B\int \kappa^2 ds E=B∫κ2ds,并近似处理,假定 ∣ p ˙ ∣ = 1 |\dot{p}| = 1 ∣p˙∣=1,问题的解为 C 2 C^2 C2分段三次多项式。
书上81页有推导,不过不懂,好像也不影响。因为这种曲线不容易实现形状控制,用的不多。而且因为是近似求解的结果,所以还存在光顺问题。目前主流使用的曲线是B样条。
- 1963年:参数三次曲线
- 1972年:贝塞尔(bezier,也叫贝齐尔)曲线,B样条
- 1975年:有理B样条
- 80年代后期:非均匀有理B样条NURBS
- 1992年STEP标准,将NURBS作为定义工业产品几何形状的唯一数学方法。
Ref
《计算机辅助几何设计与非均匀有理B样条》施法中