Bezier算法绘制水平井弯曲管道.doc_第1页
Bezier算法绘制水平井弯曲管道.doc_第2页
Bezier算法绘制水平井弯曲管道.doc_第3页
Bezier算法绘制水平井弯曲管道.doc_第4页
Bezier算法绘制水平井弯曲管道.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8A期苏健等:Bezier算法绘制水平井弯曲管道121Bezier算法绘制水平井弯曲管道苏健, 李庆云(中国石油大学(华东) 计算机与通信工程学院, 山东 东营 257061)摘 要:油田生产常常利用计算机仿真技术模拟先进采油工艺的实施过程,针对不同油井的客观环境存在较大差异,寻找一种灵活多变的仿真方法。通过对现有Bezier曲线生成算法的比较,提出了一种新的逐点逼近算法,阐述了算法原理和程序实现,结合在采油技术仿真中绘制水平井弯曲管道的应用,证明了该算法的优越性与实用性。关键词:Bezier曲线;逐点逼近;算法;水平井;管道中心轴线中图分类号:TP391.9 文献标识码:B 文章编号:1000-436X(2007)8A-0116-06Drawing curved pipes of horizontal wells based on algorithm for Bezier curveSU Jian,LI Qing-yun(College of Computer and Communication Engineering in China University of Petroleum, Dongying 257061,China)Abstract: Using the computer simulation technology,executing process of advanced oil extraction technics can be usually simulated in production of oil field and a flexible method was found because of diversities in different oil wells.After comparing with existing generating algorithms for Bezier curve,a new point-by-point approach generating algorithm was presented and its elements and program realizations were described.This algorithms advantages and practicability can be testified in drawing curved pipes of horizontal wells for simulation of oil recovery technique.Key words: Bezier curve;point-by-point approach;algorithm;horizontal wells;central axis1 引言油田采油生产中,利用计算机仿真技术模拟某项采油工艺的井下作业过程,可以起到配合该工艺更好地实施井下采油的作用1。对井下作业技术的计算机仿真,主要是对仪器设备工作过程的仿真,但是对该技术实施的客观外部环境采油井管道的仿真也是不可忽略的一部分。收稿日期:2007-06-20基金项目:国家自然科学基金资助项目(50674099)Foundation Item: The National Natural Science Foundation of China(50674099)目前存在的采油井主要有以下3种:直井(如图1所示)、定向井(如图2所示)、水平井(如图3所示)。图1 直井由于采油井种类的不同,决定了无法在开始仿真模拟采油作业之前给出固定的油井管道,必须首先仿真出特定场合下的采油井,方可对仪器设备的井下作业过程进行模拟24。此类技术拟采用OpenGL这一计算机三维图形软件接口仿真,由于OpenGL中提供的规则三维物体绘制函数无法直接运用,笔者提出一种新的Bezier曲线绘制算法,生成采油井中心轴线,通过Visual C+ 6.0对OpenGL接口编程,进而仿真出实际的或设想中的采油井管道的方法,再现仪器设备的采油环境。 图2 定向井图3 水平井2 Bezier曲线工程中应用的拟合曲线,一般地说可分为两种类型:一种是最终生成的曲线通过所有给定值点,这样的曲线适用于插值放样;另一种曲线是,它的最终结果并不一定通过给定值点,而只是比较好地接近这些点,这类曲线比较适合于外形设计。在外形设计中,初始给出的数据点往往并不精确,有的地方在外观上考虑是主要的,因为不是功能的要求,所以为了美观而宁可放弃个别数据点,因此不须最终生成的曲线都通过这些数据点。另一方面,考虑到进行外形设计时应易于实时局部修改,反映直观,以便于设计者交互操作。第一类曲线在这方面就不能适应。法国的 Bezier 为此提出了一种新的参数曲线表示方法,能较好地适用于外形设计的特殊要求而获得了广泛的应用,称为Bezier曲线。Bezier曲线(如图4所示)的形状是通过一组多边折线(特征多边形)的各顶点惟一地定义出来的。在这组顶点中:1) 只有第一个顶点和最后一个顶点在曲线上;2) 其余的顶点则用于定义曲线的导数、阶次和形状;3) 第一条边和最后一条边则表示了曲线在两端点处的切线方向。 图4 Bezier曲线实例2.1 基于定义的Bezier曲线生成算法给定空间n+1个点的位置矢量Pi(i=0,1,2,n),则Bezier参数曲线上各点坐标的插值公式是其中,Pi构成该Bezier曲线的特征多边形,Bi,n(t)是n次Bernstein基函数00 =1, 0!=1求出Bezier曲线方程,进而将曲线上各点根据公式计算得出,这便是基于定义的Bezier曲线生成算法56。2.2 Bezier曲线的递推(de Casteljau)算法如图4所示,设P0、P02、P2是一条抛物线上顺序3个不同的点。过P0和P2点的两切线交于P1点,在P02点的切线交P0P1和P2P1于P01和P11,则如下比例式成立如图5所示是所谓抛物线的三切线定理。图5 抛物线三切线定理当P0,P2固定,引入参数t,令上述比值为t:(1-t),即有t从0变到1,第一、二式就分别表示控制两边形的第一、二条边,它们是两条一次Bezier曲线。将一、二式代入第三式得当t从0变到1时,它表示了由三顶点P0、P1、P2定义的一条二次Bezier曲线,并且表明:该二次Bezier曲线可以定义为分别由前两个顶点(P0,P1)和后两个顶点(P1,P2)决定的一次Bezier曲线的线性组合。依次类推,由4个控制点定义的三次Bezier曲线P03可被定义为分别由(P0,P1,P2)和(P1,P2,P3)确定的两条二次Bezier曲线的线性组合,由(n+1)个控制点Pi(i=0,1,n)定义的n次Bezier曲线P0n可被定义为分别由前、后n个控制点定义的两条(n1)次Bezier曲线P0n-1与P1n-1的线性组合由此得到Bezier曲线的递推计算公式这便是de Casteljau算法7。2.3 算法比较计算Bezier曲线上的点,可用Bezier曲线方程,但由于其计算较复杂,通常应用较少。使用de Casteljau提出的递推算法则要简单得多。采用de Casteljau算法的递推公式,在给定参数下,求Bezier曲线上一点P(t)非常有效。de Casteljau算法稳定可靠,直观简便,可以编出十分简捷的程序,是计算Bezier曲线的基本算法和标准算法。上述两种Bezier曲线的生成算法中,一旦确定了特征多边形的顶点数,也就决定了曲线的阶次,无法更改。当顶点数较多时,曲线的阶次将较高,此时不但计算量过大,而且特征多边形对曲线形状的控制将明显减弱。下面提出了一种逐点逼近的Bezier曲线生成算法,计算量少并且曲线更逼近特征多边形,可避免上述不足之处。3 逐点逼近的Bezier曲线生成算法3.1 算法原理算法的几何原理是将已知数据组做为Bezier曲线的首、末端点和原始控制点(不包括首、末端点之外的控制点),不断插入更多逼近点替换原始控制点,直到新点集逼近到某种程度时绘制出曲线。设置递归次数n决定插入逼近点的个数和最后曲线的逼近程度,每递归一次n值减1。具体实现步骤是:1) 若n=0,将首、末端点的坐标保存到数组S中,并逐一添加到Bezier曲线的逼近控制点数组,用于绘制曲线,本次递归结束。否则,转入步骤2);2) 若n0,将首、末端点和原始控制点在直角坐标系中表示出来,n值减1,并进行以下步骤;3) 将每相邻两点用直线段顺序连接;4) 取相邻两点的中点,记为新生成的点保存下来,并摒弃原始控制点(不包括首、末端点)。再将新生成的点作为原始控制点,重复步骤3)4)。直到最后仅生成一个点,转入步骤5);5) 上一步最后生成的唯一一个新控制点做分界点,将该点前后被步骤4)保存下来的控制点分别存放到数组Q和R中;6) 对数组Q和R分别递归进行步骤1)6)。当递归循环结束后,启用不闭合折线将得到的逼近控制点顺次连接起来,该连线的结果就是最终逼近而成的Bezier曲线。3.2 算法的程序实现用Visual C+和OpenGL实现Bezier曲线的显示和绘制算法,实现方法的主要程序段如下:void CRobotDoc:BezierCurve(myPOINT3DV,int n)/数组V中存放着原始控制点CValue value;myPOINT3D Q5,R5;/每执行一次递归,n值减一n-;if(bezier = 0)m_aValue.RemoveAll();if(n 0) return;else if(n = 0 & k99)/若n=0,将首、末端点保存到数组SSkX = V0X;SkY = V0Y;SkZ = V0Z;S1+kX = V4X;S1+kY = V4Y;S1+kZ = V4Z;/将首、末端点添加到逼近控制点数组m_valuevalue.SetPos(SkX,SkY,SkZ);m_aValue.Add(value); value.SetPos(Sk+1X,Sk+1Y,Sk+1Z);m_aValue.Add(value);k=k+2;/获得路径上每一点离起始点的距离SetRoutePointDist();/重画视图UpdateAllViews(NULL); Elsefor(int i=0;i=4;i+) /分界点前的控制点保存到数组QQiX=ViX;QiY=ViY;QiZ=ViZ;for(i=1;i=i;j-)/用相邻两点的中点替换原始控制点QjX=(Qj-1X+QjX)/double(2);QjY=(Qj-1Y+QjY)/double(2);QjZ=(Qj-1Z+QjZ)/double(2); /分界点放入R0R0X=Q5-1X;R0Y=Q5-1Y; R0Z=Q5-1Z;bezier=1;/对分界点前后数组Q和R分别执行递归BezierCurve(Q,n);BezierCurve(R,n);上面是绘制Bezier曲线时不断生成新控制点替换原始控制点的过程,由于最终保留下来的点集已非常逼近曲线,因此若要将曲线显示出来,可采用不闭合折线逐点连接的方法。主要程序段如下:/绘制不闭合折线glBegin(GL_LINE_STRIP); /nSize为数组m_aValue中控制点的个数for(int i=0;im_aValuei.GetPos(&x,&y,&z); glVertex3f(x,y,z);glend();3.3 算法举例已知数据组A,B,C,D,E。A,E分别为首、末端点,B,C,D为原始控制点。设定n=6,第一次递归过程如图6和图7所示。图6 第一次递归结果图7 递归过程图解O为最后生成的新控制点,作为分界点,将A,I,L,N,O保存到数组Q,将O,M,J,F,E保存到数组R。此时n=5,Q和R分别作为原始控制点开始新的递归过程,A,I,L,N,O和O,M,J,F,E再次相当于原始的A,B,C,D,E。直到所有递归完成时,将最后保留下来的点用不闭合折线连接起来,绘制成Bezier曲线。4 算法应用于绘制水平井弯曲管道的中心轴线利用逐点逼近的Bezier曲线生成算法绘制采油井(以水平井为例)弯曲管道的中心轴线(如表1所示),图8为给定任意5个原始控制点时,绘制出的Bezier曲线;以绘制出的Bezier曲线为中心轴线,继而可以绘制出完整的水平井管道。图9为此方法绘制出的一条弯曲管道。表1原始控制点坐标(n=6)坐标原始控制点ABCDEx0.53y0.50.5z0.00.00.00.00.0图8 中心轴线图9 水平井弯曲管道5 结束语逐点逼近的Bezier曲线生成算法简单易于理解,省去了很多复杂的数学计算,具有快速的生成速度和较高的效率,绘制出的曲线更接近特征多边形。并且通过绘制水平井弯曲管道中心轴线的具体实例,证明了它具有较好的实际应用价值。理论分析与实验验证结合下,将进一步利用该算法模拟管道机器人探测、管道机器人采油井解堵、采油井防砂810等的虚拟环境,为今后深入研究管道机器人在油井采油方面的应用奠定了基础。参考文献:1李庆云等.仿蚯蚓打孔机器人的仿真系统J.计算机工程,2001,27(5):13-14.LI Q Y,et al.Simulation system for imitation earthworm robot of machining holeJ.Computer Engincering,2001,27(5):13-14.2刘永红等.机械防砂技术研究的新进展J.石油机械,2005, 33(9):74-77.LIU Y H,et al. The latest development in the technology of mechanical descandingJ. CHNA PETROLEUM MACHNERY, 2005, 33(9): 74-77.3罗英俊,万仁溥.采油技术手册M.北京:石油工业出版社,2005.LUO Y J,WAN R F.Oil Producing Technology ManualM. BeiJing: Petroleum Industry Press,2005.4常玉连等.石油工业中管道机器人技术的发展与应用前景J.石油机械,2006,34(9):122-126.CHANG Y L,et al.Development and application prospects of pipe robots used in oil industryJ.Petroleum Machinory,2006,34(9):122-126.5施法中.计算机辅助几何设计与非均匀有理B样条M.北京:北京航空大学出版社,1994.SHI F Z. Computer Aided Geometric Design and Non-uniform Rational B-splineM.BeiJing:BEIHANG University Press,1994.6FARIN, G. Algorithms for rational Bezier curveJ.Computer Aided Design,1983,15(2):73-77.7COHEN E, SCHUMAKER

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论