网站应该如何进行优化保定seo推广外包

当前位置: 首页 > news >正文

网站应该如何进行优化,保定seo推广外包,餐饮技术支持东莞网站建设,网站开发东莞目录 0 专栏介绍1 什么是B样条曲线#xff1f;2 基函数的de Boor递推式3 B样条曲线基本概念图解4 节点生成公式 0 专栏介绍 #x1f525;附C/Python/Matlab全套代码#x1f525;课程设计、毕业设计、创新竞赛必备#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)… 目录 0 专栏介绍1 什么是B样条曲线2 基函数的de Boor递推式3 B样条曲线基本概念图解4 节点生成公式 0 专栏介绍 附C/Python/Matlab全套代码课程设计、毕业设计、创新竞赛必备详细介绍全局规划(图搜索、采样法、智能算法等)局部规划(DWA、APF等)曲线优化(贝塞尔曲线、B样条曲线等)。 详情图解自动驾驶中的运动规划(Motion Planning)附几十种规划算法 1 什么是B样条曲线 为了解决贝塞尔曲线无法局部修正、控制性减弱、曲线次数过高、不易拼接的缺陷引入B样条曲线(B-Spline)。对贝塞尔曲线不了解的同学请看曲线生成 | 图解贝塞尔曲线生成原理(附ROS C/Python/Matlab仿真) B样条曲线是一种用于表示和描绘曲线的数学工具它在计算机图形学、计算机辅助设计、计算机动画和数值分析等领域得到广泛应用。其名称中的B代表了基本(basis)而样条则是在各个领域中广泛应用的一种绘制曲线的技术例如计算机图形学、物理学模拟、金融和经济分析等。在计算机图形学中样条通常用于创建平滑的曲线和曲面以便在三维场景中呈现出更真实的效果。在物理学模拟中样条可用于描述物体的运动轨迹和变形过程。 B样条曲线的性质包括平滑性、局部控制性、递归计算和多项式插值。通过调整控制点的位置、权重和节点序列可以改变B样条曲线的形状从而实现对曲线的精确控制。B样条曲线常用于描述自然曲线和复杂曲线如汽车外形、飞机机翼、艺术造型等。在计算机图形学中B样条曲线可以用来生成圆滑的曲线路径进行形状建模和渲染以及实现动画效果等。 在运动规划中B样条曲线也是一种很强大的曲线生成和轨迹优化工具接下来介绍其基本原理。 2 基函数的de Boor递推式 B样条曲线的核心是具有局部性的基函数(Basic function)——当改变一个控制节点时只会变动该点旁边有限段曲线(样条曲线则需要重新计算整条曲线因为它由一组控制点唯一确定)而非“牵一发动全身”。如图所示给出了B样条与贝塞尔曲线基函数的区别。 采用Cox-de Boor递推定义B样条曲线的基函数 N i , k ( t ) t − t i t i k − t i N i , k − 1 ( t ) t i k 1 − t t i k 1 − t i 1 N i 1 , k − 1 ( t ) N_{i,k}\left( t \right) \frac{t-ti}{t{ik}-ti}N{i,k-1}\left( t \right) \frac{t{ik1}-t}{t{ik1}-t{i1}}N{i1,k-1}\left( t \right) Ni,k​(t)tik​−ti​t−ti​​Ni,k−1​(t)tik1​−ti1​tik1​−t​Ni1,k−1​(t) 其中 N i , k ( t ) N{i,k}\left( t \right) Ni,k​(t)称为第 i i i个控制节点的 k k k次( k 1 k1 k1阶)B样条基函数 i 0 , 1 , ⋯ , n − 1 i0,1,\cdots ,n-1 i0,1,⋯,n−1 k ⩾ 1 k\geqslant 1 k⩾1且规定 0 / 0 0 {{0}/{0}}0 0/00。特别地有 N i , 0 ( t ) { 1 , t ∈ [ t i , t i 1 ) 0 , o t h e r w i s e N{i,0}\left( t \right) \begin{cases} 1,t\in \left[ ti,t{i1} \right)\ 0,\mathrm{otherwise}\\end{cases} Ni,0​(t){1,t∈[ti​,ti1​)0,otherwise​ 即高次B样条基函数为若干低次B样条基函数的线性组合。 N i , k ( t ) N{i,k}\left( t \right) Ni,k​(t)的次数 k k k与控制节点的个数 n n n无关因此B样条曲线自由度更大——允许定义多个控制点而不用担心曲线次数过高导致计算困难。 3 B样条曲线基本概念图解 B样条曲线定义为用基函数加权的控制节点 P ( t ) ∑ i 0 n − 1 p i N i , k ( t ) , t ∈ [ t k , t n ) \boldsymbol{P}\left( t \right) \sum{i0}^{n-1}{\boldsymbol{p}iN{i,k}\left( t \right)}, t\in \left[ t_k,t_n \right) P(t)i0∑n−1​pi​Ni,k​(t),t∈[tk​,tn​) 其中 T { t 0 , t 1 , ⋯ , t m − 1 } T\left{ t_0,t1,\cdots ,t{m-1} \right} T{t0​,t1​,⋯,tm−1​}是一个一维单调非递减序列称为节点向量(knot vector)其中的元素 t i t_i ti​称为节点(knot)区间 [ t i , t i 1 ) \left[ ti,t{i1} \right) [ti​,ti1​)称为第 i i i个节点区间(knot range)节点在样条曲线上的映射 P ( t i ) \boldsymbol{P}\left( t_i \right) P(ti​)称为曲节点(knot point)。 在节点向量中若某节点 t i t_i ti​出现 l l l次则称 t i ti ti​是重复度为 l l l的多重节点否则为简单节点。与贝塞尔曲线不同仅当B样条曲线首末节点重复度为 k 1 k1 k1时曲线本身才穿过首末控制点。 接下来分析B样条曲线的局部支撑性。基函数 N i , k ( t ) N{i,k}\left( t \right) Ni,k​(t)在区间 [ t i , t i k 1 ] \left[ ti,t{ik1} \right] [ti​,tik1​]上非零因为该区间上总存在不为零的零阶基函数 N i , 0 N{i,0} Ni,0​该区间称为支撑区间对应样条曲线上的区段称为支撑曲线。由于 N i , k ( t ) N{i,k}\left( t \right) Ni,k​(t)直接与控制节点 p i \boldsymbol{p}_i pi​相乘所以 p i \boldsymbol{p}_i pi​只影响其支撑区间 [ t i , t i k 1 ] \left[ ti,t{ik1} \right] [ti​,tik1​]上对应支撑曲线的形状。所以B样条曲线也可视为若干段贝塞尔曲线的拼接是贝塞尔曲线的推广相邻贝塞尔曲线间存在若干重合节点保留了对称性、几何不变性、变差伸缩性等优良特性。 为使每个控制节点都有合法的支撑区间与之匹配节点数量应满足 m n k 1 mnk1 mnk1 B样条曲线的次数指基函数多项式的最高次数阶数则可视为控制节点 p i \boldsymbol{p}_i pi​所影响的节点数。当节点区间 [ t i , t i 1 ) \left[ ti,t{i1} \right) [ti​,ti1​)上的非零 k k k次基函数达到最大数量 k 1 k1 k1个时令其满足 ∑ j i − k i N j , k 1 \sum{ji-k}^i{N{j,k}}1 ji−k∑i​Nj,k​1 称为基函数的加权性质。显然对于 k k k次基函数节点区间 [ t 0 , t k ) \left[ t_0,t_k \right) [t0​,tk​)与 [ t n , t n k ) \left[ tn,t{nk} \right) [tn​,tnk​)上的非零基函数不足 k 1 k1 k1个它们的加权和不为零在这些区间计算B样条曲线会导致错误因此B样条曲线定义在区间 [ t k , t n ) \left[ t_k,tn \right) [tk​,tn​)上。如图所示是关于B样条曲线定义区间的实例说明。 4 节点生成公式 B样条曲线由控制节点与节点向量唯一确定通过改变节点向量中节点的分布特征可以构造不同类型的B样条曲线 均匀B样条曲线(Uniform B-Spline Curve) 节点向量中的节点沿数轴方向等距离均匀分布所有节点区间等距即 t i 1 − t i c o n s t 0 , i 0 , 1 , ⋯ , n k t{i1}-ti\mathrm{const}0, i0,1,\cdots ,nk ti1​−ti​const0,i0,1,⋯,nk 准均匀B样条曲线(quasi-Uniform B-Spline Curve) 节点向量中的首末节点重复度为 k 1 k1 k1其余节点沿数轴方向等距均匀分布且重复度为1。可以证明该情况下当 k n kn kn时B样条基函数 N i , k ( t ) N{i,k}\left( t \right) Ni,k​(t)退化为伯恩斯坦多项式即B样条曲线退化为贝塞尔曲线。 非均匀B样条曲线(non-Uniform B-Spline Curve) 节点向量任意分布
节点生成通常有两种方法 均匀法 { t 0 t 1 ⋯ t k 0 t k i i n − k 1 , i 1 , 2 , ⋯ , n − k − 1 t n t n 1 ⋯ t n k 1 \begin{cases} t_0t_1\cdots tk0\ t{ki}\frac{i}{n-k1}, i1,2,\cdots ,n-k-1\ tnt{n1}\cdots t_{nk}1\\end{cases} ⎩ ⎨ ⎧​t0​t1​⋯tk​0tki​n−k1i​,i1,2,⋯,n−k−1tn​tn1​⋯tnk​1​ 该方法不依赖于参数选择。De Boor法 { t 0 t 1 ⋯ t k 0 t k i 1 k ∑ j i i k − 1 u j , i 1 , 2 , ⋯ , n − k − 1 t n t n 1 ⋯ t n k 1 \begin{cases} t_0t_1\cdots tk0\ t{ki}\frac{1}{k}\sum_{ji}^{ik-1}{u_j}, i1,2,\cdots ,n-k-1\ tnt{n1}\cdots t_{nk}1\\end{cases} ⎩ ⎨ ⎧​t0​t1​⋯tk​0tki​k1​∑jiik−1​uj​,i1,2,⋯,n−k−1tn​tn1​⋯tnk​1​ 该方法对选择的参数进行窗口平滑。 下一节将继续介绍B样条曲线的计算算法——近似和插值应用并给出代码实现。 更多精彩专栏 《ROS从入门到精通》《Pytorch深度学习实战》《机器学习强基计划》《运动规划实战精讲》… 源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系