线元法曲线任意里程中边桩坐标正反算程序_第1页
线元法曲线任意里程中边桩坐标正反算程序_第2页
线元法曲线任意里程中边桩坐标正反算程序_第3页
线元法曲线任意里程中边桩坐标正反算程序_第4页
线元法曲线任意里程中边桩坐标正反算程序_第5页
已阅读5页,还剩5页未读, 继续免费阅读

下载本文档

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

文档简介

1、线元法曲线任意里程中边桩坐标正反算(CASIO fx-5800P计算器)程序(附带高程)一、功能及原理说明功能说明:本程序由一个主程序(1-MAIN)和七个子程序一一正算子程序(1-SUB-ZS)、反算子程 序(1-SUB-FS)等构成,可以根据曲线段一一直线、圆曲线、缓和曲线(完整或非完整型)的线元 要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里 程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。本修改版程序既可实现正算 全线贯通,亦可实现反算全线贯通。本程序在CASIO FX-5800P计算器运行。计算原理:利用Gauss-Legendre

2、5点通用公式正算线路中边桩坐标、线外测点至曲线元起点和 终点的垂距的符号是否相异(即DcaXDcb该测点在其线元内)进行判断并利用该线元要素反 算中桩里程、支距,最后计算出反算结果。程序输入计算器后,请根据统计串列ListX,Y,freqN在程序中实际可能被使用的维数,将 其统计矩阵串列改为包含相应维数的任意数据的矩阵,即在list列表中随机输入相应维数的数据, 保证矩阵大小符合维数要求。本程序正算速度在1-2秒左右,反算比正算慢点,可根据需要调整精度加快速度。本程序可建 立曲线要素数据库及高程变坡点数据库,一次输入整条线路数据,计算时自动调用数据库,实现 全线贯通,也可临时手动输入线元计算要

3、素进行计算。本程序由小骆在前人的基础上改进而成,经个人测试可用。学识浅薄,不足之处,在所难免, 欢迎提出改进意见。二、源程序主 程序 (1-MAIN)Deg:fix 320DimZLbl 0:cls:INPUT(0),ZX(1),YX(2)” ?I (选择手动输入计算参数0,还是调用线路数据1,2)If I=0:Then Prog “1-DAT1” :IfEnd“SZ=XY(1),XY=SZ(2)” ?N (正算,反算)If N=1 :Then Goto 1Else If N=2 :Then Goto 2Else Goto 3IfEnd:IfEndLbl 1: “KP=”?S (输入待求桩号)

4、If S0:Then Goto 0:IfEnd“JL(m)=” ?Z (输入偏距)If Z 尹 0:Then “ANGLE-R(Deg)=”?M:IfEnd (输入斜交右角)If I尹0:Then Prog “1-DAT2” :IfEndS-OW:If WH:Then cls:locate 6,2,KP OUTGoto 0:IfEnd:IfEnd(前半条针对“DAT”情况,后半条针对“INPUT”情况。)Prog “1-SUB-ZS” :Prog 1-SUB-GC”If Z0:Then cls: XR(m)=”:locate 4,1,X:“YR(m)=”:locate 4,2,Y,Else c

5、ls: X(m)=” :locate 5,1,X:“Y(m)=”:locate 5,2,Y“Hs(m)=” :locate 5,3,Z16:Fix 6:(临时增加显示位数以显示角度)“FWJ=”:locate 5,4, Int(F)+0.01Int(60Frac(F)+0.006Frac(60Frac(F) / (将 10进制角度转换为度分秒形式)Fix 3:IfEnd:IfEndGoto 1Lbl 2: “X(m)=”?X:If X0:Then Goto 0:IfEnd (输入待反算点X坐标) “Y(m)二”?Y(输入待反算点Y坐标) XZ4:YZ5:0M为运行“ SUB-ZX ”垂距计算

6、准备数据Ifend采用双变量递增,J变量超前计 算以保证 list x, Y,freqZ,Z+1 的取值能准确无误,特别是对于 存在多条线路的情况。此处利用If I=0:Then 1 j:Ulist X1:Vlist Y1:H W: 0fZ:prog “1-SUB-ZS” :G+QEH(C+HD) F: Xlist X2:Ylist Y2:1 Z G-90A:F-90B:Prog 1-SUB-ZX” If Z6Z7=0:Then goto B:Ifend G+90A:F+90B:Prog 1-SUB-ZX” IF Z6Z7=0:Then Goto B Else cls: locate 6,2,

7、KP OUT”:Goto 0: IfEnd: 1J:Prog 1-DAT1” 0Z:Lbl A: Isz J:Prog 1-DAT1”:Isz Z List freqZ-9A:list freqZ+1-9B:Prog 1-SUB-ZX” If Z6Z7=0:Then ZJ:Prog 1-DAT1” :Goto B:IfEnd List freqZ+9A:list freqZ+1+9B:Prog “SUB-ZX”If Z6Z7=0:Then ZJ:Prog 1-DAT1” :Goto B:Else Goto A:IfEnd双变量递增找出待求点所在的 Lbl B:Prog 1-SUB-FS”线兀O

8、+WS:Prog “ 1-SUB-GC ”Cls: K(m)=” :locate 4,1,S: Hs(m)=” :locate 4,2,Z16:“JL(m)=” :locate 4,3,Z, Goto 2Lbl 3:cls: locate 4,2,1-MAIN-END正算子程序(1-SUB-ZS)0.1184634425 一 A: 0.2393143352 一 B:0.2844444444一 Z1:0.0469100770 一 K:0.2307653449L:0.5Z3U+W(Acos(G+QEKW(C+KWD)+Bcos(G+QELW(C+LWD)+Z1cos(G+QEZ3W(C+Z3WD)

9、+Bcos(G+QE(1-L)W(C+(1-L)WD)+Acos(G+QE(1-K)W(C+(1-K)WD) XV+W(Asin(G+QEKW(C+KWD)+Bsin(G+QELW(C+LWD)+Z1sin(G+QEZ3W(C+Z3WD)+Bsin (G+QE(1-L)W(C+(1-L)WD)+Asin(G+QE(1-K)W(C+(1-K)WD) YG+QEW(C+WD)+MFX+Zcos(F)一X:Y+Zsin(F) 一YF-MF:If F0:Then F+360一F:IfEndReturn反算子程序(1-SUB-FS)G-90fT:Abs(Z5-V)cos(T)-(Z4-U)sin(T)

10、W: 0f Z (给Z赋值0,因为在 1-sub-zs中Z被调 用,可能存在值)Lbl C:Prog “1-SUB-ZS”T+QEW(C+WD) 一Z8:(Z5-Y)cos(Z8)-(Z4-X)sin(Z8) 一Z2If Abs (Z2) Z12:Then 1Z14:Else -1Z14:IfEndIf SZ17:Then Z10+Z15Z16 Z16:Else Z10+Z15Z16+Z14(Z17-Z16) :2:Z11 一 Z16:IfEndReturn垂距计算子程序(1-SUB-ZX)(Z5-list YZ)cos(A)-(Z4-list XZ)sin(A) 一Z6(Z5-list YZ

11、+1)cos(B)-(Z4-list XZ+1)sin(B) Z7Return曲线元要素数据库:1-DAT1(两条线路,可扩充为多条线路)If I=0:Then Goto E: Else If I=2:Then Goto F:IfEnd:IfEndj=1二*list X1(起点 x 坐标 U):* list Y1(起点 Y 坐标 V):*Mat A1,1(起点里程 O):*一list freq1(起点方位角G) :*一Mat A1,2(起终点里程差H):*一MatA1,4(起 点半径P):*Mat A1,5(终点半径R):* 一Mat A1,5(偏转系数Q,左负右正,直线取0):Goto H:

12、IfEndJ=2二*list X2(起点x坐标U):*一list Y2(起点Y坐标V):*一list freq2(起点方 位角G):起点里程O,起终点里程差H,起点半径P,终点半径R,偏转系数Q Mat A: Goto H: IfEnd J=3二*list X3(起点x坐标U):*一list Y3(起点Y坐标V):*一list freq3(起点方 位角G):起点里程O,起终点里程差H,起点半径P,终点半径R,偏转系数Q MatA: GotoH: IfEndLbl F: J=1=*f list X1(起点x坐标U):*一list Y1(起点Y坐标V):*一list freq1(起点方位角G):起

13、点里程O,起终点里程差H,起点半径P,终点半径R,偏转系数Q Mat A: GotoH: IfEndJ=2二*list X2(起点x坐标U):*一list Y2(起点Y坐标V):*一list freq2(起点方 位角G):起点里程O,起终点里程差H,起点半径P,终点半径R,偏转系数Q MatA: GotoH: IfEnd(注:如有多个曲线元要素继续添加入数据库DAT1中)Lbl E: list Xj一U:list Yj一V:list freqj一G:Mat A1,1一O:Mat A1,2一H:Mat A1,3 一 P:Mat A1,4 一 R:Mat A1,5 一 Q:Goto GLbl E:

14、 “X0=”?U: “Y0=”?V: “S0=”?O: “F0=”?G: “LS=”?H: “R0=”?P: “RN=”?R: “Q二”?QLbl G:1 + PC:(P-R) : (2HPR) 一D:180; nE:Return7 .曲线元要素判断数据库:1-DAT2(两条线路,可扩充为多条线路)If I=2:Then Goto 2:IfEndIf S第一线元终点里程:Then 1一J:Prog “1-DAT1” :ReturnElse If、第二线元终点里程:Then 2一J:Prog “1-DAT1” :ReturnElse If S第三线元终点里程:Then 3一J:Prog “1-D

15、AT1” :ReturnElse If S第四线元终点里程:Then 4一J:Prog “1-DAT1” :ReturnIfEnd:IfEnd:IfEnd:IfEndIf、2第四线元起点里程And S第五线元终点里程:Then 5J: Prog “1-DAT1”: ReturnElse If S第n线元里程:Then nJ: Prog “1-DAT1”: Return IfEnd:IfEnd:IfEnd:IfEndLbl 2If,第一线元终点里程:Then 1J:Prog 1-DAT1” :ReturnElse If S第二线元终点里程:Then 2J:Prog 1-DAT1 :ReturnE

16、lse If S第三线元终点里程:Then 3J:Prog 1-DAT1” :ReturnElse If S第四线元终点里程:Then 4J:Prog 1-DAT1 :Return IfEnd:IfEnd:IfEnd:IfEndIf S2第四线元起点里程And S第五线元终点里程:Then 5J: Prog “1-DAT1: ReturnElse If S第n线元里程:Then nJ: Prog 1-DAT1”: Return IfEnd:IfEnd:IfEnd:IfEnd8.高程数据库子程序:1-DAT3 (两条线路,可扩充为多条线路)(直线段统一并入各曲线段的左 侧)If I=0:Then

17、 Goto A:Else If I=2:Then Goto 2:IfEnd: IfEndIf S第一变坡点的终点里程:Then变坡点里程Mat B1,1:变坡点高程Mat B1,2:竖曲线 半径Mat B1,3:变坡点左边纵坡Mat B1,4:变坡点右边纵坡Mat B1,5:Ifend (纵坡上坡为正,下坡为负。半径都取正值,坡度不用加百分号,例如-2.8%的坡度输入-2.8)If S第二变坡点的终点里程:Then 变坡点里程,变坡点高程,竖曲线半径,变坡点左边纵坡, 变坡点右边纵坡Mat B: goto B:IfendLbl 2If, XYXY = SZ1、 N ?选择计算方式,输入1表示进

18、行由里程、边距计算坐标;输入2表示由坐标反算 里程和边距。2、X0 ?线元起点的X坐标(U)3、Y0 ?线元起点的Y坐标(V)4、S0 ?线元起点里程(O)5、F0 ?线元起点切线方位角(G)6、LS ?线元长度(H)7、R0 ?线元起点曲率半径(P)8、RN ?线元止点曲率半径(R)9、Q ? 线 元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)10、S ?正算时所求点的里程11、Z ?正算时所求点距中线的边距(左侧取负,值右侧取正值,在中线上取零)12、ANG?正算边桩时左右边桩连线与线路中线的右交角13、J?曲线元数据库曲线段判断系数(J=1、2.n)14、X ?反算时所求点的X坐

19、标15、Y ?反算时所求点的Y坐标16、M?斜交右角17、T、Z8、Z2?反算时起点及迭代点切线的垂线的方位角,Z2是迭代计算时的迭代变量。18、Z4反算时反算点的X坐标19、Z5反算时反算点的Y坐标20、W?正反算时所求点的里程与该段落起点里程的差值。21、A、B、Z1是Gauss-Legendre求积公式中的插值系数22、C、D、E是正算时为简化计算用于代替Gauss-Legendre公式中的小计算式的变量23、K、L、Z3是Gauss-Legendre求积公式中的求积节点24、J=1 时:listX1、listY1、MatA1,1、listfreq1、MatA1,2、MatA1,3、Ma

20、t A1,4、Mat A1,5分别是各曲线元的X、Y坐标、起始里程S0、初始方位角F0、线元长度Ls、起 点半径R0、终点半径Rn、曲线偏向系数QJ=n时:listXJ、list YJ、Mat A1,1、list freqJ、Mat A1,2、Mat A1,3、Mat A1,4、 Mat A1,5分别是各曲线元的X、Y坐标、起始里程S0、初始方位角F0、线元长度Ls、起点半径R0、 终点半径Rn、曲线偏向系数Q25、Z6、Z7?线外点到线元起点与终点的垂距,也即线外点到起终点切线的垂线的距离。26、Z9Z17?高程计算时的临时变量(二)、显示部分:XS= XXX正算时,计算得出的所求点的X坐标

21、YS=XXX正算时,计算得出的所求点的Y坐标S=XXX反算时,计算得出的所求点的里程Z=XXX反算时,计算得出的所求点的边距四、算例某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组成,各段线元S0X0Y0F0LSR0RNQ500.00019942.83728343.561125 16 31.00269.2561E451E450769.25619787.34028563.378125 16 31.0037.4921E45221.75-1806.74819766.56628594.574120 25 54.07112.779221.75221.75-1919.5271973

22、6.07228701.89391 17 30.6380.285221.759579.228-1999.81219744.03828781.65980 40 50.00100.0001E451E450的要素(起点里程S0、起点坐标X0 Y0、起点切线方位角F0、线元长度LS、起点曲率半径R0、止点 曲率半径RN、线元左右偏标志Q)如下:S=700Z=-5计算得XS=19831.41785YS=28509.72590S=700Z=0计算得XS=19827.33592YS=28506.83837S=700Z= 5计算得XS=19823.25398YS=28503.95084S=780Z=-5计算得X

23、S=19785.25749YS=28575.02270S=780Z=0计算得XS=19781.15561YS=28572.16358S=780Z= 5计算得XS=19777.05373YS=28569.30446S=870Z=-5计算得XS=19747.53609YS=28654.13091S=870Z=0计算得XS=19742.68648YS=28652.91379S=870Z= 5计算得XS=19737.83688YS=28651.696681、正算(注意:略去计算方式及线元要素输入,请自行根据所求点所在的线元输入线元要素)S=940 Z=-5.123S=940 Z=0S=940 Z= 3.

温馨提示

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

评论

0/150

提交评论