基于Bézier曲线的队形保持算法研究
2021-10-07
来源:步旅网
第27卷第1期 计算机仿真 2010年1月 文章编号:1006—9348(2010)01—0006—03 基于B6zier曲线的队形保持算法研究 黄玺瑛,赵定海 (装甲兵工程学院指挥管理系,北京100072) 摘要:为了在计算机仿真中减少CGF实体用于保持战斗队形而产生的计算量,并使得每个CGF实体的自动跟进路线更为光 顺逼真,可采用三次B6zier逼近样条曲线的方法来模拟CGF实体的跟进路线。在计算时,只要求实时给出CGF实体运动的 起点、终点位置及其运动方向,利用B ̄zier曲线的端点特性,用de Castljau递推算法就可以快速拟合出一条CGF实体的运动 轨迹。算法使得采用较少的特征点拟合整条曲线,拟合出的CGF实体行进路线较为平直、平滑,且算法的计算量小、计算速 度快,能够满足CGF系统对仿真逼真性和实时性的要求。 关键词:计算机生成兵力;贝赛尔曲线;队形保持;仿真 中图分类号:TP391.9 文献标识码:B A Method for Team Order Maintenance Based on B6zier Spline Curve HUANG Xi—ying,ZHAO Ding—hai (Department of Equipment Command&Management,Academy of Armored Force Engineeirng,Beijing 100072,China) ABSTRACT:In order to reduce the amount of computation for maintaining team order of CGF entity in battlefield during simulation,and to make the auto follow—up line of each CGF entity more realistic,it is a good way to use third—order B6zier curves to simulate the CGF entity follow—up line.The conditions of real—time calculation are the location and direction of starting and ending point of CGF entity.Using de Castljau recursion method and the characteristics of extreme points of the curve,a moving track of a CGF entity can be quickly fitted.The endpoint fea— tures of BSzier curve make it possible that all the points of the curve could be got with several special points.The fit— irng curve is smooth enough for meeting the the requirement of CGF entities’movement. KEYWORDS:CGF;B6zier curve;Team order;Simulation 1 引言 2)对于不规则三角网DEM,队形保持算法的复杂度增 计算机生成兵力(Computer—Generated—Forces,CGF)作 大,而且由于三角形网格大小不同,计算出来跟进路线会出现 为分布交互仿真中的一个重要组成部分,在军事仿真中起着 不规则的拐点,想要取得较好的效果还要再次进行插值处理。 重要作用,其中实体动力学模型、执行机构和推理机制是 为了在计算机仿真中减少CGF实体用于保持战斗队形 CGF实体建模的核心部分…。在CGF仿真中,战斗队形保 而产生的计算量,并使得每个CGF实体的自动跟进路线更 持是实体动力学模型需要解决的一个常见问题。分队或更 为光顺,可以采用逼近样条曲线来对CGF的行进路线进行 大建制的战斗团体往往需要按照一定的队形运动,在战斗团 计算。 体中一个战斗实体路线已经确定的情况下,其它战斗实体需 要自动按照较短且平滑的路线跟进。 2 B6zier逼近样条曲线原理及特点 一种常用的CGF处理模式是依托栅格DEM进行网格检 B6zier逼近样条曲线是一种在造型设计中常用的样条曲 索,根据队形要求和路径选择结果令战斗实体沿着规定的地 线。设计者只需要给定一定数量的控制点,就可以使用 形网格行进 。但这种方法的缺点是: B6zier多项式或者de Castljau快速递推算法计算出样条曲线 1)跟进步长受栅格大小的制约,栅格越大,跟进路线的 上指定数量的点,连接这些点即构成逼近样条曲线。用控制 走样现象越明显,而过细小的网格则会大大加重图形渲染负 点来生成曲线的方法与战斗分队按步长进行机动仿真的工 担,使得场景显示速度减慢甚至出现跳帧; 程实践方法相吻合。 2.1 B6zier逼近样条曲线原理 假设给出n+1个控制点位置: ( ,Y , )(k∈[0, 收稿日期:2008—06—01修回日期:2008—09—22 n]),可以使用B6zier混合函数产生位置向量尸(u)(式1),连 ——6—— 接P( )各个元素就得到 和P 之间(包括 和P )的 B6zier曲线 : P(“)=∑P BEZ (u),0≤M≤1 其中,BEZ (M)是Bernstein基函数: BEZ . (1) (2) (u)=C(n,k)M (1一H) 一 是参数,取[0,1]之问的任意实数,如果是等间距取 点,则常以步长△ 来描述,△ =÷。 这里,参数C(n,k)是二项式系数: c( )= (3) 那么,曲线上任意一点P(//,)表示单个曲线坐标三个参 数方程的集合: (“)=∑XkBEZ (u) y( ):∑y BEZ ( ) (“)=∑ BEZ (“) (4) 2.2 B6zier逼近样条曲线特点 由B6zier曲线逼近公式容易推导出B6zier曲线的重要 特点 : 1)曲线起、终点与特征多边形起终点相一致; 2)曲线起、终点斜率与特征多边形第一条边及最后一 条边方向一致; 3)高阶曲线可由低阶曲线拼接而成,在拼接点能够满 足C 连续性。 在工程实践中常常使用三次B ̄zier曲线,因为三次 B6zier曲线不但具有以上B6 一zier曲线的典型特征,而且计算 量小、能够灵活地拼接出高阶B6zier曲线,很好地避免直接 生成高阶B6zier曲线所遇到的其他问题。 在CGF队形保持问题中,三次B6zier曲线因其计算速度 快、可控性强的优点而成为解决问题的首选逼近曲线。 3 CGF中战斗队形保持问题描述 在CGF仿真中,“战斗队形保持”是一类常见问题。这 类问题的基本描述如图1所示。 假设需要描述一个具有三辆战斗车的战斗分队队形保 持问题,其中1号指挥车由操作员或机动驱动程序控制,其 行进路线是由作战想定或仿真剧本给出,而2、3号车由计算 机控制,要求其与1号车保持固定的队形行进,本例为前三 角队形。 当三辆坦克以固定前三角队形行进时,其基本过程是: 当操作员或机动控制程序操作1号车从M点行进至N点 时,其行进方向由MM’改变为NN’。以2号车为例,此时也 要求计算机控制的2号车以某条跟进路线从N点行进到N’ 点,同时与1号车保持相同的行进方向和固定的相对位置。 图1 坦克分队队形保持示意图 而由于CGF仿真的需要,结合坦克分队队形要求,仿真要求 2号车的跟进路线满足以下四点要求 “ : 1)跟进路线力求短且光滑,不能出现生硬的拐弯; 2)要保证以N点为出发点,N’点为终到点; 3)要求初始行进方向为NN.方向,终了行进方向为 N2N’方向; 4)跟进路线的计算速度要简洁、快速。 综合考虑问题本质和跟进路线的四点要求,结合B6zier 曲线的端点特性和光顺特性,可考虑选择B6zier曲线来拟合 这条跟进路线。具体做法是:可以以2号坦克行进初始点 N、初始行进方向上一点N 、终点行进方向反向延长线上一 点N 、终点N’四点作为特征多边形构造一条三次B6zier曲 线。显然,按照B6zier曲线的端点性质分析发现,该曲线能 够很好地满足以上提到的四点要求: 1)曲线起点和终点分别是2号坦克的出发点和终到 点,满足要求2; 2)曲线起点和终点的切向分别是2号坦克的初始行进 方向和终了行进方向,满足要求3; 3)B6zier曲线由于是逼近样条曲线,因此其形态比较平 直光滑,满足要求1; 4)三次B6zier曲线的逼近函数比较简单,也可利用De Casl— jaLl递推算法i 亍加速计算,计算复杂度为O(n),满足要求4。 因此,令计算机控制的坦克按照上述B6zier三次样条该 曲线运动可以很好地解决坦克分队行进中的队形保持问题。 4用三次B ̄zier曲线实现CGF队形保持仿真 本文介绍使用de Ca ̄tljau递推算法计算任意次B6zier曲 线的方法,关于de Castljau递推算法推导过程,文献[4]有详 细介绍。 de Castljau递推算法公式是: P :{ 一 PP i。+ P : , ,…,, 。,。,..., 一 ,(5) 式(5)中,用 来统一表示递推中取到的所有点,k表示 使用该函数能够在已知特征多边形顶点坐标串 Con— trolPt的情况下计算出B6zier曲线点的坐标串¥CurvPt,将这 些点顺次连接起来即是所求的曲线。具体到队形保持的问 题上,仅需输入上一节所讨论的四个控制点的坐标,即可得 到坦克2的跟进路线,令坦克2按照计算出的点移动即实现 了坦克2的自动队形保持仿真。当由操作员控制的坦克1 的位置和方向不断变化时,仅需同时调整四个控制点坐标并 重新计算曲线即可。由于该递推算法速度非常快,每一步递 推的计算量仅是2次乘法、1次加法,因此完全满足仿真的实 时陛要求。在测试中,计算一条具有500个逼近点的三次 递推的次数,从1开始,n表示特征多边形的顶点数,i表示点 序列号,i=0,1,…,n—ko据此公式可设计任意次B6zier曲 线计算函数,将计算步长△u设定为0.01,这样计算得到的 B6zier样条曲线便由100个点组成。设计人员可以根据需要 设定合适的计算步长,步长越小,逼近点越多,曲线越细致, 计算量也越大,反之亦然。在本例中,函数限制曲线拟合点 最多不超过100个,控制点个数最多不超过40个。控制点 存放在数组CtrlPoint[MAX—CTRLPT]中,计算返回的逼近曲 线点存放在数组CurvPt[MAX—CURVEPT]中,实际使用的控 制点个数作为函数参数n传人。 #define U_STEP0.01 #define MAX_CURVEPT 100 #define MAXCTRUyI'40 —void BezCalculate(CPoint ControlPt,CPoint¥CurvPt, int n) { //变量定义 lfoat U=float(0.O); lfoat ul=1; CPoint P_ik[MAX—CTRLPT]; int i=0;int k=1;int j=0;int r=0; //使用de Casteljau算法计算瞳线点 for(j:0;j<MAX—CURVEPT;j++) { ul=float(1.0)一U; //将控制点赋给第0次递推产生的计算点 for(int r=0;r<=n;r++) P_ik[r]=ControlPt[r]; //对于某个u值,依次递推,直到计算出曲线上的一点P _ik[0] for(k=1;k<=n;k++) { for(i=0;i<=n—k;i++) j P_ik[i].x:int(ul}P_ik[i].x+t P—ik[i+ 1]_x). P_ik[i].y:int(ul P ik eil.y+t{P—ik[i+ 1].y); } } CurvPt[j]=P ik E0]; u 4-=U_STEP: } } 以上代码基于VC+4-6.0开发环境设计,设计人员可以 根据需要改写成其他语言适用的函数,在此不再赘述。 一8一 B6zier曲线,其计算时间不足1毫秒。 5结论 Bezier逼近样条曲线在造型设计中是一种常用的曲线, 其理论和算法相当成熟。通过研究Bezier曲线的特性发现, 其在CGF仿真中也能很好地解决战斗分队的队形保持问 题。 它能保证拟合出的行进路线不但具有正确的起点、终点 和方向,而且能够保证路径的平滑形态,在对动力学仿真要 求不高的情况下能够较好地反映一般战斗车辆的机动和转 弯特点。而且Bezier样条曲线的计算十分简洁快速,适合计 算机实现,能满足仿真的实时牲要求。 但本文介绍的算法并未考虑地形对车辆机动的影响,对 于一些希望细致反映装备运动学特性的仿真,还应结合数字 高程模型(DEM)和战场动态地形模型计算每一点的坡度、坡 向、可通行性等信息,如何令CGF实体在尽量保持战斗队形 的情况下又充分考虑战场地形影响是本文下一步要研究的 内容。 参考文献: [1]王江云,等.通用型计算机生成兵力开发系统【J].计算机工 程与应用,2004。16:206—208. [2] 韩志军,徐克虎,李锰.坦克分队计算机生成兵力(CGF)实体 仿真研究[J].系统仿真学报,2004,16(7):1367—1368. [3] Donald Heam.计算机图形学一OpenGL版[M].北京:电子工 业出版社,2003. 孙家广.计算机图形学[M].北京:清华大学出版社,1998. 张文华等.坦克连排战术教材[M].北京:解放军出版社, 1996 [作者简介] 黄玺瑛(1977一),女(汉族),河北宣化人,讲师,主 要研究方向为地理信息系统、计算机生成兵力和战 场环境仿真; 赵定海(1978一),男(汉族),内蒙古包头人,讲师, 主要研究方向为计算机生成兵力、战场环境仿真。