Bezier曲面算法及Bezier曲线

Bezier曲面算法及Bezier曲线
Bezier曲面算法及Bezier曲线

昆明理工大学理学院

信息与计算科学专业设计/综合性实验报告

年级: 2015级姓名:学号: 201511101105 指导教师:胡杰

实验课程名称:计算机图形学开课实验室:理学楼210

实验内容:

1.实验/作业题目:

MFC绘图Bezier曲面算法及Bezier曲线

2.实验/作业课时:2个课时

3.问题描述(包括实验环境、实验内容的描述、完成实验要求的知识或技能):实验环境:(1)硬件:每人一台PC机

(2)软件:windows OS,VC++6.0或以上版本。

实验内容的描述:Bezier曲面算法及Bezier曲线,Bezier去面啊绘制需要加入控制网格加以控制,先生成控制网格,再根据Bezier算法来绘制出曲面Bezier曲线根据控制点来绘制曲线。

完成实验要求的知识或技能:

Bezier算法的迭代算法。

(2)Bezier曲线分为一次/二次/三次/多次贝塞尔曲线,之所以这么分是为了更好的理解其中的内涵。一次贝塞尔曲线(线性Bezier),实际上就是一条连接两点的直线段。在此使用了三次Bezier算法。

(3)曲线算法的几种主要算法以及各自的优缺点。

(4)基本的程序阅读能力,VC6.0的基本使用技巧

4.基本要求(完成实验要达到的目标):

Bezier曲线定义:给定n+1个控制顶点Pi(i=0~n) ,则Bezier曲线定义为:P(t)=∑Bi,n(t)Pi u∈[0,1] 其中:Bi,n(t)称为基函数。Bi,n(t)=Ci nti (1-t)n-i Ci n=n!/(i!*(n-i)!) 二、Bezier曲线性质 1、端点性质: a)P(0)=P0, P(1)=Pn, 即:曲线过二端点。 b)P’(0)=n(P1-P0), P’(1)=n(Pn-Pn-1) 即:在二端点与控制多边形相切。 2、凸包性:Bezier 曲线完成落在控制多边形的凸包内。 3、对称性:由Pi与Pn-i组成的曲线,位置一致,方向相反。 4、包络性:Pn (t)=(1-t)Pn-1 (t)+tPn-1 (t)

6.算法描述或流程图:

7.实验数据和实验结果(用屏幕图形表示,可另加附页):

8.实验心得体会:

在数学的数值分析领域中,贝塞尔曲线(Bézier curve)是电脑图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。

9.改进建议:绘制Bezier曲面的时候的控制网格可以按多种风格生成也就是曲面有了不同的风格。

评分标准学风--报告格式规范,文字清晰观察能力--正确描述和理解问题

分析能力—准确分析问题,算法基本正确问题解决能力—详细算法过程严谨、准确

操作能力--正确输入程序,熟悉编程环境调试能力--熟练使用调试功能解决程序错误

(注:可编辑下载,若有不当之处,请指正,谢谢!)

三次Bezier曲线原理及实现代码

Bezier曲线原理及实现代码(c++) 一、原理: 贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau 算法开发,以稳定数值的方法求出贝塞尔曲线。 线性贝塞尔曲线 给定点P0、P1,线性贝塞尔曲线只是一条两点之间的直线。这条线由下式给出: 且其等同于线性插值。 二次方贝塞尔曲线的路径由给定点P0、P1、P2的函数B(t) 追踪: 。TrueType字型就运用了以贝塞尔样条组成的二次贝塞尔曲线。 P0、P1、P2、P3四个点在平面或在三维空间中定义了三次方贝塞尔曲线。曲线起始于P0走向P1,并从P2的方向来到P3。一般不会经过P1或P2;这两个点只是在那里提供方向资讯。P0和P1之间的间距,决定了曲线在转而趋进P3之前,走向P2方向的“长度有多长”。 曲线的参数形式为: 。 现代的成象系统,如PostScript、Asymptote和Metafont,运用了以贝塞尔样条组成的三次贝塞尔曲线,用来描绘曲线轮廓。 一般化

P0、P1、…、P n,其贝塞尔曲线即 。 例如: 。 如上公式可如下递归表达:用表示由点P0、P1、…、P n所决定的贝塞尔曲线。则 用平常话来说,阶贝塞尔曲线之间的插值。 一些关于参数曲线的术语,有 即多项式 又称作n阶的伯恩斯坦基底多项式,定义00 = 1。 点P i称作贝塞尔曲线的控制点。多边形以带有线的贝塞尔点连接而成,起始于P0并以P n终止,称作贝塞尔多边形(或控制多边形)。贝塞尔多边形的凸包(convex hull)包含有贝塞尔曲线。

实验三 自由曲线的生成

实验三 Bezier曲线生成 一、实验目的 1. 理解并会自己编程实现二维Bezier曲线的画图 二、实验内容和要求 1.选择自己熟悉的任何编程语言, 建议使用VB,VC或JAVA。 2.创建良好的用户界面,包括菜单,参数输入区域和图形显示区域。 3.实现二维2、3、4阶Bezier曲线的描画。 4.将生成算法以菜单或按钮形式集成到用户界面上。 5.坐标参数可以用鼠标或键盘输入。 三.实验报告 1.用户界面的设计思想和框图。 2.各种实现算法的算法思想。 3.算法验证例子。 4.上交源程序。 四.Bezier曲线生成程序设计的步骤如下: 1.创建工程名称为“Test”单文档应用程序框架 (1)启动VC,选择“文件”|“新建”菜单命令,并在弹出的新建对话框中单击“工程”标签。 (2)选择MFC AppWizard(exe),在“工程名称”编辑框中输入“Test”作为工程名称,单击“确定”按钮,出现Step 1对话框。 (3)选择“单个文档”选项,单击“下一个”按钮,出现Step 2对话框。 (4)接受默认选项,单击“下一个”按钮,在出现的Step 3~Step 5对话框中,接受默认选项,单击“下一个”按钮。 (5)在Step 6对话框中单击“完成”按钮,即完成“Test”应用程序的所有选项,随后出现工程信息对话框(记录以上步骤各选项选择情况),如图1-2所示,单击“确定”按钮,完成应用程序框架的创建。

图1-2 信息程序基本 2.编辑菜单资源 设计如图1-1所示的菜单项。在工作区的ResourceView标签中,单击Menu项左边“+”,然后双击其子项IDR_MAINFRAME,并根据表1-1中的定义编辑菜单资源。此时VC已自动建好程序框架,如图1-2所示。 表1-1菜单资源表 3.添加消息处理函数 利用ClassWizard(建立类向导)为应用程序添加与菜单项相关的消息处理函数,ClassName栏中选择CTestView,根据表1-2建立如下的消息映射函数,ClassWizard会自动完成有关的函数声明。 表1-2菜单项的消息处理函数 onRButtonDown()。

竖曲线习题

竖曲线练习题 1、设在桩号K2 +600 处设一竖曲线变坡点,高程m . i1 =1%, i2 = -2%,竖曲线半径3500 m试计算竖曲线个点高程(20m整桩即能被20整除的桩号) 解:ω= i2 -i1 = -2% -1% = -3% 为凸曲线。 曲线长L = Rω= 3500× = 105 m . 切线长T = L/2 = 105÷2 = m 竖曲线起点桩号= (K2 +600 ) -= K2 + 竖曲线终点桩号= ( K2 +600) += K2 + 竖曲线起点高程= -× = m 竖曲线终点高程= -× = m 各20 m整桩 K2+560 X1 = (K2 + 560)-( K2 + = m h1 =X2/2R = ÷7000 = m 切线高程: -[(K2 + 600) -(K2 + 560)] X = m 设计高程-= m K2+580 X1 = (K2 + 580)-( K2 + = m h1 =X2/2R = ÷7000 = m 切线高程: -((K2 + 600) -(K2 + 580)) X = m 设计高程-= m K2+600 X1 = T =(K2 + 6000)-( K2 + = m h1 =X2/2R = ÷7000 = m 切线高程: m 设计高程-= m K2+620 X1 = (K2 + )-( K2 +620) = m h1 =X2/2R = ÷7000 = m 切线高程: -((K2 + 620) -(K2 + 600)) X = 设计高程-= 9m K2+640 X1 = (K2 + )-( K2 +640) = m h1 =X2/2R = ÷7000 = m 切线高程: -[(K2 + 640 -(K2 + 600)] X = m 长度不小于500 m 。试确定竖曲线最小半径值并计算K1 +800 、K1 +840、K1 +860 设计高程。 解:ω= i2 -i1 = % -(-)% = 4% 为凹曲线。

FX-4850计算器曲线计算程序2011.721

ZHY程序FX5800 辛普森计算器公路测量常用程序修改版一、程序功能 LbI 0:"X="?A: "Y="?B:"Z="?C:"1/(R1)"?D:"1/(R2)"?E:"QT="?F: "QT="?G: "V"?V:"W"?W LbI 1:"L"?L:"O"?O:"H"?H:IF L>G:Then Goto 1:IFEnd (E-D)/(G-F)→P:L-F→Q:P*Q→I C+(I+2*D)*Q*(90/∏)→J C+(I/4 +2*D)*Q*(45/(2*∏))→M C+(3/4*I+2*D)*Q*(135/(2*∏))→N C+(I÷2+2*D)*Q*(45÷∏) →K "X=":A+Q÷12*(COS(C)+4*(COS(M)+C0S(N))+2*COS (K)+COS(J))+O*COS(J+H)→X◢ "Y=":B+Q÷12*(SIN(C)+4*(SIN(M)+SIS(N))+2*SIN (K)+SIN(J))+O*SIN(J+H)→Y◢ X-V→I:Y-W→J PoL(I,J) ”J=”:J▲DMS▲ If J <0:Then “J=”:J+360°→J:J▲DMS ▲ if End Goto1

F5800计算器曲线计算JD程序(ZH~HZ)坐标计算放样公式 主程序: 30→Dim Z: "XJD="?B: "YJD="?D: "KJD="?M: "A="?A: "ZJ="? Q: "R="?R: "LS1="?C: "LS2="?T: "F="?F:prog "A":Lb1 0: "XO="?G: "YO="?H: "LC="?L: "JJ="?Z: "PJ="?S:If L≤M-Z[11]+C:Then M- Z[11]COS(F) →N:D- Z[11]Sin(F) →E:Prog "ZHHY":Prog "FWJ": Goto 0:Else If L≤M-Z[11]+ Z[13]-T: Then M- Z[11] →K:B- Z[11] COS(F) →N:D- Z[11]Sin(F) →E: Prog "HYYH":Prog "FWJ": Goto 0: Else If L≤M-Z[11]+ Z[13]:Then M- Z[11]+ Z[13] →K:F+AQ+180→V:B-Z[12] COS(V) →N:D- Z[12] Sin(V) →E: Prog "YHHZ":Prog "FWJ": Goto 0: Else "End" ▲ If End: If End: If End 说明:以上主程序需要四个副程序,缺少任何一个副程序不能运行! "XJD="?: "YJD="?: "KJD="?为曲线交点坐标及桩号 "A="?为曲线左转取-1;右转取1 "ZJ="?为曲线转角值;"R="?为曲线半径 "LS1="?: "LS2="?为前后段缓和曲线长度 "F="?曲线起始方位角; " X0="?、" Y0="?:全站仪测站点坐标 " LC="?为曲线ZH-HZ段内所求任意点桩号; "JJ="?为切线顺时针夹角;"PJ="?为左右侧所求点距设计线距离;

竖曲线高程计算

4.3 某条道路变坡点桩号为K25+460.00,高程为780.72.m,i1=0.8%,i2=5%,竖曲线半径为5000m。(1)判断凸、凹性;(2)计算竖曲线要素;(3)计算竖曲线起点、K25+400.00、K25+460.00、K25+500.00、终点的设计高程。 解:ω=i2-i1=5%-0.8%=4.2%凹曲线 L=R?ω=5000×4.2%=210.00 m T=L/2=105.00 m E=T2/2R=1.10 m 竖曲线起点桩号:K25+460-T=K25+355.00 设计高程:780.72-105×0.8%=779.88 m K25+400: 横距:x=(K25+400)-(K25+355.00)=45m 竖距:h=x2/2R=0.20 m 切线高程:779.88+45×0.8%=780.2 m 设计高程:780.24+0.20=780.44 m K25+460:变坡点处 设计高程=变坡点高程+E=780.72+1.10=781.82 m 竖曲线终点桩号:K25+460+T=K25+565 设计高程:780.72+105×5%=785.97 m K25+500:两种方法 1、从竖曲线起点开始计算 横距:x=(K25+500)-(K25+355.00)=145m 竖距:h=x2/2R=2.10 m 切线高程(从竖曲线起点越过变坡点向前延伸):779.88+145×0.8%=781.04m 设计高程:781.04+2.10=783.14 m 2、从竖曲线终点开始计算 横距:x=(K25+565)-(K25+500)=65m 竖距:h=x2/2R=0.42 m 切线高程 (从竖曲线终点反向计算):785.97-65×5%=782.72m 或从变坡点计算:780.72+(105-65)×5%=782.72m 设计高程:782.72+0.42=783.14 m

计算机图形学 编程生成“三次贝塞尔”曲线

集美大学 计算机工程学院实验报告 课程名称计算机图形学教程 实验名称实验五、编程生成“三次贝塞尔”曲 线 实验类型设计型 学号 日期12月12日地点 成绩教师

一、实验目的: 一方面,让学生对自由曲线的生成算法有更深入的理解,特别是对于曲线的逼近,能够通过实验编程来验证书上所提供的算法思想:另一方面,在图形程序设计方法(如设计各种各样的图形)、绘图函数的使用以及C和C++语言编程环境、程序的调试和测试方面受到比较系统和严格的训练。 二、实验内容: 运用所学的三次贝塞尔曲线生成的算法,根据以下数据点[x, y]:[50, 100] [80, 230] [100, 270] [140, 160] [180, 50] [240, 65] [270, 120] [330, 230] [380, 230] [430, 150]计算出结果,并实现三段贝塞尔在屏幕上显示的功能 三、实验要求: (1)3段三次贝塞尔曲线在衔接点上要连续,曲线整体效果要光滑。 (2)整个图形轮廓要清晰,色彩要分明 四、实验环境: 1.PC,CPU:P4 2.0GHz以上,内存:512M,硬盘:40GB以上; 2.操作系统:Microsoft Windows 2000 /2003/XP; 3.软件:VC或JAVA等。 五、实验内容及完成情况: #include "graphics.h" #include "conio.h" #include "stdio.h" typedef struct { double x,y; } DPOINT; //定义结构体

class Bezier //定义Bezier类 { private: DPOINT* bP; int m_maxIndex; void drawFrame(); void drawCurve(); void drawCurve(int p0,int p1,int p2,int p3); public: Bezier(DPOINT* p,int len); //定义构造函数 void draw(); }; Bezier::Bezier(DPOINT* p,int len) //构造函数的实现{ this ->bP=p; m_maxIndex=len-1; } void Bezier::draw() //通过公有函数调用私有函数{

曲线拨正计算程序说明

曲线拨正计算程序 一、概述 曲线方向整正常用的方法有矢距法、偏角法和绳正法。前两种多应用于新建或改建的铁路上。在既有线上,由于行车的干扰,置镜困难,绳正法得以普遍应用。绳正法基本上是以一种试算性质的、称之为流水拨道的为主。过去,由于条件的限制,现场人员计算一条曲线要费好大的劲,因为数据量较大,一遍一遍的要算好几张纸,搞的头疼。现在,电脑得以广泛应用,为做好线路养护维修奠定了良好基础。根据绳正法整正曲线基本原理、公式,在Windows平台上编写了这个计算程序。希望给我的同行带来方便,节约时间,又快又好的把铁路曲线拨正,拨圆,让火车跑的稳,跑的快,适应提速的需要。同时,也借此机会交流经验,向专家,老师学习。 二、适用范围与主要功能 本程序适用于直线型超高顺坡的缓和曲线,不能计算复心曲线,不适用于曲线型超高顺坡的缓和曲线拨正计算;对无头、无尾、无资料的“三无”曲线可自动初步判别曲线半径及缓和曲线长度,通过试算找到较小的拨道量,曲线计算完毕后将结果输出到Word文档,同时输出缓和曲线两种检查表,一是以2m弦线测量,在缓和曲线上每1m量一处正矢的;二是以10m弦线测量,在缓和曲线上每5m一点的。等同于缓和曲线加设副矢检查点,主要是为了适应提速的需要,把缓和曲线做好。 三、操作过程

1、程序运行后开始出现的是登录画面,如下图:要求输入口令。 初始口令为“000000”,即6个0。以后你可以根据自己的习惯,修改呢称、口令。 2.主画面。上面的图就是主画面一角,共有5个主菜单:分别是:[计算],[输出],[设置],[退出],[说明]。其中后二项没有子菜单,前三项的子菜单如下三幅图。 [计算]项下一共是5个子菜单,分别是[填入现场正矢]、[确定半径、缓和线长]、[计算半拨量]、[修正、计算拨量]及[退出]。现在看到,填入正矢菜单是灰色的,表示里面已有曲线数据在计算,现场正矢、控制点和备注的内容都填好了,不能改了。只有点击[设置]里面的[计算新曲线开关],这个菜单才变得可操作,但同时也清空了现有的数据。 3.计算一条曲线的过程:

怎样确定 Bezier 曲线的控制点

怎样确定 Bezier 曲线的控制点 (一) 设在平面上已知有 1+n 个数据点 ),(i i i y x P ,n i ,,2,1,0 =。要求在相邻的每两个点 i P 与 1+i P 之间,用一条3次Bezier 曲线连接。 3次Bezier 由4个点确定:i P 是它的起点,1+i P 是它的终点,在起点和终点之间,另外还有两个控制点,依次记为 i A 和 i B 。现在的问题是:如何确定这两个控制点? (二) 如果在各段3次Bezier 曲线的接头处,只要求曲线函数式的一阶导数连续,也就是说,只要求曲线的切线斜率连续,那么,控制点还是很容易确定的。 我们只要过每一个 i P 点,分别作曲线的切线,然后把位于 i P 前面的控制点 1-i B 和位于i P 后面的控制点 i A ,都取在过 i P 点所作的切线上就可以了。 如果我们把过 i P 点的切线方向,取为与线段 11+-i i P P 平行的方向,那么,控制点 i A 的坐标就可以表示为: i A ()(11-+-+i i i x x a x ,)(11-+-+i i i y y a y ) ; 控制点 i B 的坐标就可以表示为: i B ()(21i i i x x b x --++,)(21i i i y y b y --++) 。 其中,a ,b 是两个可以任意给定的正数,比如说,我们可以取 4 1==b a ,这时,控制点的坐标可以用下列公式求出: i A (411-+-+i i i x x x ,4 11-+-+i i i y y y ) ; i B (421i i i x x x -- ++,421i i i y y y --++ ) 。 例 设 1-i P ,i P ,1+i P ,2+i P 这4点的坐标为 )1,1(),(11=--i i y x ,)2,2(),(=i i y x ,)1,3(),(11=++i i y x ,)2,4(),(22=++i i y x , 按照上面给出的公式,可以求得控制点 i A 的坐标为 (411-+-+ i i i x x x ,411-+-+i i i y y y )=(4132-+,4112-+ ))2,5.2(= ,

cad画缓和曲线方法

在AutoCAD中缓和曲线的几种画法 2011-06-25 20:32 在AutoCAD中画缓和曲线比较困难,目前常用的画法有AutoLISP 程序法(需要已知曲线要素)、坐标脚本法(需事先计算好各特征点及其他点为的坐标)、曲线命令法(需事先准备各特征点坐标),现分别介绍如下: 画法一:缓和曲线AutoLISP 应用程序 一、制作缓和曲线AutoLISP 应用程序 复制AutoLISP程序源代码,打开“记事本”,粘贴进去后,另存为文件名“缓和曲线.LSP”,保存类型为“所有文件”(AutoLISP程序源代码见附件) 二、加载缓和曲线AutoLISP应用程序 在命令行输入“appload”打开自动加载对话框。在对话框的“查找范围”里找到“缓和曲线.LSP”的那个程序,选中后,点击【加载】,显示“已成功加载缓和曲线.LSP”后,关闭对话框,ok你那个程序自动启动加载了。 三、在CAD中画出切线长

四、运行程序在命令行中输入hh回车

五、选择两条切线,然后输入曲线半径如:2204.5回车

六、输入缓和曲线长,如270,绘图完成!

画法二:坐标脚本法 1.现做一个CAD脚本,会的人跳过(用Windows 文本另存为“.scr”文件) 2.脚本编辑输入“SPLINE+空格键+Y坐标+,+X坐标+空格键+Y坐标+,+X坐标……” 以此类推!点输的越密,线条越平滑。也可以用EXCEL算出各个点的坐标后粘贴进去,然后按照“SPLINE+空格键+Y坐标+,+X坐标+空格键+Y坐标+,+X坐标……”格式编辑。 3.进入CAD,运行脚本,就行了! 注意:你可能输入了100个点,而出现的确只有几个点,这个很正常,你把图像删除了,多运行几次就行,一般不超过4次。 画法三:使用真样条曲线命令 举例如下: 输入导线:pline命令绘制1、2、3各点,其对应坐标如下

贝塞尔曲线和B样条曲线(优质参考)

§4.3 贝塞尔曲线和B 样条曲线 在前面讨论的抛物样条和三次参数样条曲线,他们的共同特点是:生成的曲线通过所有给定的型值点。我们称之为“点点通过”。但在实际工作中,往往给出的型值点并不是十分精确,有的点仅仅是出于外观上的考虑。在这样的前提下,用精确的插值方法去一点点地插值运算就很不合算;另外,局部修改某些型值点,希望涉及到曲线的范围越小越好,这也是评价一种拟合方法好坏的指标之一。 针对以上要求,法国人Bezier 提出了一种参数曲线表示方法,称之为贝塞尔曲线。后来又经Gorgon, Riesenfeld 和Forrest 等人加以发展成为B 样条曲线。 一、 贝塞尔曲线 贝塞尔曲线是通过一组多边折线的各顶点来定义。在各顶点中,曲线经过第一点和最后一点,其余各点则定义曲线的导数、阶次和形状。第一条和最后一条则表示曲线起点和终点的切线方向。 1.数学表达式 n+1个顶点定义一个n 次贝塞尔曲线,其表达式为: )()(0,t B p t p n i n i i ∑== 10≤≤t ),...,2,1,0(n i p i =为各顶点的位置向量,)(,t B n i 为伯恩斯坦基函数 i n i n i t t n i n t B ---= )1()! 1(!! )(, 2.二次贝塞尔曲线 需要3个顶点,即210,,p p p ,将其代入曲线表达式: 2,222,112,00)(B p B p B p t p ++=

220202,021)1() 1()! 02(!0! 2t t t t t B +-=-=--= - 21212,122)1(2)1()! 12(!1! 2t t t t t t B -=-=--= - 22222,2)1()! 22(!2! 2t t t B =--= - 221202)22()21()(p t p t t p t t t p +-++-= [ ] ?? ?? ? ???????????????--=2102 0010221211p p p t t 10≤≤t 2102)21(2)1(2)(tp p t p t t p +-+-=' )(222)0(0110p p p p p -=+-=' 0)0(p p = )(222)1(1221p p p p p -=+-=' 2)1(p p = 当2 1 = t 时: 21021041214141)412212()412121(21p p p p p p p ++=+?-?++?-=?? ? ?? )](2 1 [21201p p p ++= 02210212)2121(2)121(221p p p p p p -=?+?-+-=?? ? ??'

城市道路规划例题

1. 道路中线一转折处A ,转折角0 60=α,其旁有一重要建筑物,基础尺寸为m m 85?. 外边缘距A 点最短距离为25m,欲保留该建筑物,已知该路的设计车速为40h km /,道路宽度为24m,路拱横坡为2%,1.0=μ,问该弯道的可能最小半径值? 解:(1)按地形地物控制计算平曲线半径 )(422 24 525min m E =+ += 根据公式 )(7.2721 30sec 42 1 2 sec 0max min m E R =-= -= α 地形 取 )(300m R = (2)按满足设计车速、行车舒适和经济要求计算 根据公式 )(160) 02.01.0(1271600)(1272min m i V R =-?=-=μ 因为地形地物条件许可,且min min R R ≥地形,所以取 )(300m R = 该弯道的可能最小半径为300m 2. 某二级汽车专用公路上有一变坡点,桩号为,20010+k 切线标高为120.28m,两相邻路段 的纵坡为m R i i 5000%,3%,521=-==凸,试设计该变坡处的竖曲线。 解:(1)竖曲线长度 )(400m R L ==ω 切线长度 )(2002 m L T == 外距 )(422 m R T E == (2)求竖曲线的起点的终点桩号 起点桩号 0001020020010+=-+K K 终点桩号 4001020020010+=++K K (3)求各桩号的设计标高 竖曲线起点00010+K 切线标高 )(28.11005.020028.120m =?- 设计标高 )(28.110m 处10010+K 至起点距离 x =10100-10000=100m

竖曲线自动计算表格

竖曲线自动计算表格 篇一:Excel竖曲线计算 利用Excel表格进行全线线路竖曲线的统一计算 高速公路纵断面线型比较复杂,竖曲线数量比较多。由于相当多的竖曲线分段造成了设计高程计算的相对困难,为了方便直接根据里程桩号计算设计高程,遂编制此计算程序。程序原理: 1、根据设计图建立竖曲线参数库; 2、根据输入里程智能判断该里程位于何段竖曲线上; 3、根据得到的竖曲线分段标志调取该分段的曲线参数到计算表格中; 4、把各曲线参数带入公式进行竖曲线高程的计算; 5、对程序进<0 = J=0; M-P=0 = J=1 B: K<=D =B=-M ; KD = B=P 程序特色: 1、可以无限添加竖曲线,竖曲线数据库不限制竖曲线条数; 2、直接输入里程就可以计算设计高程,不需考虑该里程所处的竖曲线分段;

3、对计算公式进行保护,表格中不显示公式,不会导致公式被错误修改或恶意编辑。 程序的具体编制步骤: 1、新建Excel工作薄,对第一第二工作表重新命名为“参数库”和“计算程序”,根据设计图建立本标段线路竖曲线的参数库,需要以下条目: (1)、竖曲线编号; (2)、竖曲线的前后坡度(I1、I2)不需要把坡度转换为小数; (3)、竖曲线半径、切线长(不需要考虑是凸型或凹型);(4)、竖曲线交点里程、交点高程; (5)、竖曲线起点里程、终点里程(终点里程不是必要参数,只作为复核检测用);如图1所示: 图1 2、进行计算准备: (1)、根据输入里程判断该里程所处的曲线编号: 需要使用lookup函数,函数公式为“LOOKUP(A2,参数库!H3:H25,参数库!A3:A25)”。如图2所示: 里程为K15+631的桩号位于第11个编号的竖曲线处,可以参照图1 进行对照 (2)、在工作表“程序计算”中对应“参数库”相应的格式建立表格

实验四 自由曲线曲面算法实验(2)

实验四 自由曲线曲面算法实验 实验项目性质:设计性实验 所属课程名称:3D 游戏图形学 实验计划学时:3学时 一、 实验目的和要求 1. 了解自由曲线和曲面的生成原理; 2. 掌握并实现Bezier 曲线和B 样条曲线的生成算法; 3. 实现Bezier 曲面的生成算法。 二、 实验原理 1. Bezier 曲线是通过一组多边形折线的顶点来定义的。如果折线的顶点固定不变,则由其定义的Bezier 曲线是唯一的。在折线的各顶点中,只有第一点和最后一点在曲线上且作为曲线的起始处和终止处,其他的点用于控制曲线的形状及阶次。曲线的形状趋向于多边形折线的形状,要修改曲线,只要修改折线的各顶点就可以了。因此,多边形折线又称Bezier 曲线的控制多边形,其顶点称为控制点。 三次多项式,有四个控制点,如图1所示, 其数学表示如下: ,300.31 1.32 2.33 3.30 ()()()()()()i i i Q t PB t P B t PB t P B t P B t ===+++∑

32230123(1)3(1)3(1),[0,1]t P t t P t t P t P t =-+-+-+∈ (1) 其矩阵形式为 01322313313630()(1),[0,1]33001000P P Q t t t t t P P --????????-????=∈????-???????? (2) 2. B 样条曲线保留了Bezier 曲线的优点,对Bezier 曲线进行了拓广,用B 样条基代替Bernstein 基,克服了Bezier 曲线由于整体表示带来的不具备局部性质的缺点。B 样条曲线的数学定义为 0n k k,m k p(t)P B (t) ==∑ (3) 式中,(0,1 ,,)k P k n = 为n+1个控制点,由控制点顺序连成的折线称为B 样条控制多边形。m 是一个阶参数,可以取2到控制顶点个数n+1之间的任一整数,m-1是B 样条曲线的次数。参数t 的选取取决于B 样条结点矢量的选取。k,m B (t)是B 样条基函数, ()()k 1,1,,11,111 1 ()0 ()k k k k m k m k m k m k m k k m k t t t B t t t t t B t B t B t t t t t ++-+-+-++≤

5800计算器公路坐标计算程序(全线)直缓和圆曲线程序

5800计算器公路坐标计算程序(全线) 原4850程序改编 Lb1 1 ”K”?K:”W”?W:”O”?O:”I”?I IF K<41490.879:Then 40776.825→A: 41490.879→ B: 3761346.715→ M: 505279.147→N:166°45′36.3″→F: 1/1045→D:1/1045→E :Goto 0 :Return:Ifend IF K<41690.879:Then 41490.879→A: 41690.879→ B: 3760651.641→ M: 505442.686→N:166°45′36.3″→F: 1/1045→D:1/1000→E :Goto 0 :Return:Ifend IF K<42242.154:Then 41690.879→A: 42242.154→ B: 3760455.626→ M: 505481.961→N:172°29′22.78″→F: 1000→ R:Goto 2: Return:Ifend IF K<42442.154:Then 42242.154→A: 42442.154→ B: 3759916.982→ M: 505403.549→N:204°04′31.62″→F: 1/1000→D: 1/1045→E: Goto 0 : Return:Ifend IF K<42673.884:Then 42442.154→A: 42673.884→ B: 3759740.299→ M: 505310.019→N :209°48′18.1″→F: 1/1045→D: =1/1045→E :Goto 0 : Return:Ifend IF K<42863.884:Then 42673.884→A: 42863.884→ B:3759539.223→ M:505194.838→N:209°48′18.1″→F:-1/1045→D:-1/800→E:Goto 0 : Return:Ifend IF K<43636.692:Then 42863.884→A: 43636.692→ B:3759370.853→ M:505107.051→N:203°00′04.15″→F:R=-800:Goto2 : Return:Ifend IF K<43826.692:Then 43636.692→A: 43826.692→ B:3758630.216→ M: 505167.591→N:147°39′10.35″→F: -1/800→D:E=-1/1045→E :Goto 0 : Return:Ifend IF K<44825.092:Then 43826.692→A: 44825.092→ B:3758478.338→ M: 505281.555→N:140°50′56.4″→F:-1/1045→D:-1/1045→E: Goto 0 : Return:Ifend IF K<45025.092:Then 44825.092→A: 45025.092→ B:3757704.093→ M: 505911.911→N:140°50′56.4″→F: 1/1045→D:1/1000→E:Goto 0 : Return:Ifend IF K<45300.109:Then 45025.092→A: 45300.109→ B:3757544.945→ M: 506032.892→N:146°34′42.88″→F:R=1000:Goto 2 : Return:Ifend IF K<45500.109:Then 45300.109→A: 45500.109→ B:3757297.588→ M: 506151.102→N:162°20′09.32″→F: 1/1000→D: 1/1045→E :Goto 0 : Return:Ifend IF K<45805.835:Then 45500.109→A: 45805.835→ B:3757103.485→ M: 506198.937→N:168°03′55.8″→F: 1/1045→D:1/1045→E: Goto 0 : Return:Ifend IF K<45980.835:Then 45805.835→A: 45980.835→ B:3756804.367→ M: 506262.160→N:168°03′55.8″→F: -1/1045→D: -1/1000→E:Goto 0 : Return:Ifend IF K<46136.333:Then 45980.835→A: 46136.333→ B:3756634.336→ M: 506303.312→N:163°03′07.63″→F:R=-1000:Goto 2 : Return:Ifend Lb1 0 (E-D)÷(Abs(B-A)) →P: Abs(K-A) →Q: F+(PQ+2D)Q×90÷∏→J F+(PQ÷4+2D)Q×45÷(2∏) →G F+(3PQ÷4+2D)Q×135÷(2∏) →H F+(PQ÷2+2D)Q×45÷∏→S:

道路工程(计算题)

计算题 1. 某城市道路相邻两段纵坡分别为1i =-3%,2i =2%,变坡点里K1+150,变坡点高程200.53m ,要使变坡点处得设计高程不小于201.80,则该竖曲线半径最小为多少(取到千米整数倍) 解:ω=2i -1i =2%-(-3%)=5% E+200.53≥201.80 ∴221+200.53201.808 R i -≥(i ),R ≥4064 取R=5000m 2. 城市道路相邻变坡分别为1i =3%,2i =-2%,变坡点里程为K1+150,变坡点高程为200.53m ,该竖曲线半径为5000m 。 (1) 计算竖曲线坡差ω并判断其竖曲线类型,计算竖曲线长,切线长,竖曲线外距 (2) 求竖曲线起点、终点桩号 (3) 计算K1+130桩号设计高程 解:(1)ω=2i -1i =-2%-3%=-5% L=R ω=5000×5%=250m T=L/2=250/2=125m E= 2 2T R =1.56m (2)QD=(K1+150)-125=K1+025.00 ZD=(K1+150)+125=K1+275.00 (3)K1+130装号设计标高:用变坡点里程为K1+150,故该桩号在变坡点前x=125-20=105m ,又因为切线长为125m,故该桩号在竖曲线起点和终点范围内, 2 2x y R ==1.10m ,H 切=200.53-20×3%=199.93m ,H 求=H 切-y=199.93-1.10=198.83m 3.某路线平面部分设计资料如下: JD1=K0+819.562 JD2=K1+270.427 ZH1=K0+619.150 ZH2=K1+095.155 HY1=K0+734.150 YH1=K0+849.351 HZ1=K0+964.351 (1) 试计算弯道1的切线长,曲线长,缓和曲线长及曲线中点桩号 (2) 试计算交点1和交点2间距 (3) 若交点1与交点2的曲线是属于反向曲线,且该道路设计速度v=80km/h ,曲线 1和曲线2之间的直线长度,该曲线间的直线长度是否满足直线最小长度的要求,为什么? 解:(1)切线长l 切=200.412m 曲线长l 曲=345.201m 缓和曲线长l 缓=115m QZ1=K0+791.751m

二次bezier曲线

#include #include #include #include #define ESC 0x1b void Initialize(void) { int graphdriver; int graphmode; int errorcode; graphdriver=DETECT; initgraph(&graphdriver,&graphmode,"C:\Program Files\WINYES\TCPP30H"); errorcode=graphresult(); if(errorcode != grOk) { printf("Graphics System Error:%s\n",grapherrormsg(errorcode)); exit(1); } } void bezier_2_ins(long q[][2]){ const NO=3; const KT=5; float p[3][2]; long pk[129][2],pt[129][2]; int i,k,m=NO-1; double ll,l1,l2; for(i=0;i

纬地计算实例,你肯定用的着

首先,我是一个软件菜鸟,对于纬地道路也是听说了很久却不会用,待到真要使用的时候按照网上搜来的步骤总是运行不下去,苦苦钻研几天,也询问了一些同学,好在最终可以完成路线的平、纵、横断面布置及相关图表的输出。先将成果分析给有需求的人,赠人玫瑰,手留余香~ 纬地道路详细步骤: 1、首先在目的硬盘新建一个文件夹,按喜好为文件夹命名,比如说abc。 2、打开纬地系统,点击左上角“项目”→新建项目,在弹出的对话框填写新建项目名称abc,点击浏览为项目文件指定存放路径,找到所建文件夹abc的位置,并为新建项目文件命名,这里为abc.prj,点击确定,完成项目新建。 3、打开电子图(CAD .dwg文件类型)。 4、搞清楚各个图层的状态需要进行什么约束{(等高线╱约束线)、(地形点╱地形点的)}。 5、然后关闭图形,不进行修改 6、数模→数模组管理→新建数模→确定→关闭。 7、数模→三维数据读入→DWG 或 DXF 格式→找到刚打开的电子图读入将等高线设为约束线→地形点设为地形点→点击开始读入。 8、①数模→三角构网②数模→网格显示→显示所有网格→确定。 9、数模→数模组管理,弹出的对话框中选中显示的数模文件,点击保存数模,指定路径并命名为abc,文件后缀为(.dtm)→再次选中对话框中的文件,点击保存数模组,生成并保存.gtm文件,路径保持默认,即为文件夹abc,最后一次选中对话框中的文件,点击打开数模→关闭

10、打开地形图,设计→主线平面设计→找到自己要设计的路线起点→点击后→点插入→是→对除起终点之外的其他交点进行“拖动R”来设置平曲线→计算绘图→点存盘→是,得到“.jd”文件,并根据提示将交点文件自动转化为“.pm”文件。 11、项目→设计向导→下一步(多次重复下一步)自动计算超高加宽→完成(根据提示自动建立:路幅宽度变化数据文件(*.wid)、超高过渡数据文件(*.sup)、设计参数控制文件(*.ctr)、桩号序列文件(*.sta)等数据文件。 12、数模-→数模应用→纵断面插值,弹出对话框,勾选插值控制选项,点击开始插值,生成纵断面地面线文件(*.dmx)以及地面高程文件(*.zmx)。 13、数模-→数模应用→横断面插值,弹出对话框,选取绘制三维地面线及输出组数(其他默认),点击开始插值,生成横断面地面线文件(*.hdm)。) 14、CAD 新建→选择最后一个文件夹→打开→打开acadiso. 文件(样板文件)。 15、设计→纵断面设计→计算显示→确定。 16、设计→纵断面设计→选点(此时可以打开cad的栅格显示,在最下边)→在图上选第一个高程点点(左边端点起),再接着点击插入,插入几个变坡点,最后一个右边端点→点击实时修改对纵坡顶修改(将竖曲线调整到合理)→存盘→计算显示→删除纵断面图。 17、设计→路基设计计算→点击“... ”→保存→搜索全线→确定→计算 18、设计→横断面设绘图→选中土方数据文件→点击“... ”→保存→绘图控制→(选中记录三维数据、插入图框、绘出路槽图)→计算绘图→保存,在CAD合适位置完成横断面设计图的输出。 19、点击“表格“按需要输出各种表格。

卡西欧fx-5800p计算器”单圆曲线计算“程序以及程序说明

单圆曲线(YQXJS) “KO”?O: “X0”?A:“Y0”?B:“JDX”?X:“JDY”?Y:“FWJ”?J:“FO”?F:?N:?R:6→DimZ←┘(K0为输入起算点桩号),(X0为输入起算点X坐标),(Y0为输入起算点Y坐标),(JDX输入曲线所在交点X坐标,无输入0),(JDY为输入曲线所在的Y坐标,无输入0),(FWJ为输入起算点的方位角),(F0为输入交点处的转角,带正负号,当左转时在转角前加-;右转时在转角前加+),(N为转角方向,正输入+1,负输入-1),(R为输入曲线半径)Abs(F)÷2→G◢“T=”:Rtan(G)→T◢(计算切线长) “L=”:GRπ÷90→L◢(计算圆曲线长) “E=”:R÷cos(G)-R→E◢(计算外距,即交点到QZ点的距离) LbI 1←┘ ?K:180N(K-O)÷(πR)→V:2Rsin(0.5NV)→M←┘(K为输入待求点的桩号)V为带求点与起算点间的弦长说对应的圆心角 “XZ=”:A+Mcos(J+0.5V)→Z[1]◢(计算出的中桩X坐标) “YZ=”:B+Msin(J+0.5V)→Z[2]◢(计算出的中桩Y坐标) tan-1((Z[2]-Y)÷(Z[1]-X))→U←┘ If U<0:Then U+360→U:Else U→U:If End←┘ “FW=”?U :U DMS◢(计算出的中桩与交点的方位角) ?W:“XL=”:Z[1]-NWcos(J+V+90)→Z[3]◢(W为输入路半宽,计算出的左边桩X坐标)“YL=”:Z[2]-NWsin(J+V+90)→Z[4]◢(计算出的左边桩Y坐标) “XR=”: Z [1]+NWcos(J+V+90)→Z[5]◢(计算出的右边桩X坐标) “YR=”:Z[2]+NWsin(J+V+90)→Z[6]◢(计算出的右边桩Y坐标) 特别注意: 1.进行反向计算(大桩号往小桩号计算)时,起算点桩号应设为0;待求桩号与起算点距离多远桩号就为多少; 3.起算点方位角应与起算点之前的线形所对应的方位角一致。

相关文档
最新文档