计算机图形学(曲线参数化表示)

最近在做CAD的开发,涉及到BSpline,记录一些数学学习过程。

曲线表示

曲线、曲面的表示方程一般分为三种:
空间曲线上的一个点可以表示为

  • 显示方程表示 :
    z = f ( x , y ) z= f(x,y) z=f(x,y)
  • 隐式方程表示 :
    f ( x , y , z ) = 0 f(x,y,z)=0 f(x,y,z)=0
  • 参数方程表示 :(参数方程表示不唯一)
    p ( t ) = [ x ( t ) 、 y ( t ) 、 z ( t ) ] p(t) = [x(t)、y(t)、z(t)] p(t)=[x(t)y(t)z(t)]
    笛卡尔分量 p ( t ) = x ( t ) i + y ( t ) j + z ( t ) ] k p(t) = x(t)i+y(t)j+z(t)]k p(t)=x(t)i+y(t)j+z(t)]k

因为种种原因和便捷性,在CAD中主要用了参数方程,部分可能会涉及到隐式方程。二者互补性强,以下对比二者

参数方程对比

对比维度 隐式表示 参数表示
核心逻辑 约束关系(点满足什么条件)(某些情况的曲面offset好用) 生成规则(如何生成点)
空间适应性 2D 曲线、3D 曲面 2D/3D 曲线、3D 曲面(全场景覆盖)
形状有界性 擅长无界 擅长有界片段(零件轮廓、圆弧)
设计友好性 系数无几何意义,不适合交互设计 控制点直观,适合交互控形
关键操作效率 快速判断 “点在不在曲线上” 快速生成 “曲线上的点”
奇点处理 无参数化伪奇点 可能存在伪奇点,需额外处理(如球的南北极点)

幂基表示

“幂基” 的核心是用 ** 幂函数(幂函数(1, u, u², …, uⁿ))作为 “基函数”,通过 “基函数与系数矢量的线性组合” 来定义曲线。类比数学中的 “多项式展开”:比如二次多项式(f(u) = 2 + 3u + 5u²),是用(1, u, u²)作为基,系数为(2, 3, 5);而 n 次曲线的幂基表示,是将这种 “标量多项式” 推广到 “矢量多项式”—— 每个系数都是三维矢量,对应曲线上点的坐标分量。

公式解析

  • n次曲线的幂级形式:
    C ( u ) = ⟨ x ( u ) , y ( u ) , z ( u ) ⟩ = ∑ i = 0 n a i u i , 0 ≤ u ≤ 1 C(u) = \langle x(u), y(u), z(u) \rangle = \sum_{i=0}^{n} a_{i} u^{i}, \quad 0 \leq u \leq 1 C(u)=x(u),y(u),z(u)⟩=i=0naiui,0u1

  • 矩阵形式:
    C ( u ) = [ a 0 a 1 ⋯ a n ] [ 1 u ⋮ u n ] = [ a i ] T [ u i ] C(u) = \begin{bmatrix} a_{0} & a_{1} & \cdots & a_{n} \end{bmatrix} \begin{bmatrix} 1 \\ u \\ \vdots \\ u^{n} \end{bmatrix} = \left[ a_{i} \right]^{T} \left[ u^{i} \right] C(u)=[a0a1an] 1uun =[ai]T[ui]
    其中 [ a i ] T \left[ a_{i} \right]^{T} [ai]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值