
FX5800P全线任意里程中边桩坐标正反算 曲线任意里程中边桩坐标正反算.doc
47页FX5800P全线任意里程中边桩坐标正反算(加了数据库)本程序非本人原创,结合上传者长处,进行改编,愿收获和大家共享,不足之处多多指教希望过路神仙把竖曲线加进去带算隧道超欠挖,谢谢曲線任意里程中邊樁坐標正反算5800p本程序由内蒙@文哥和师父阿玖哥共同改编完成主程序 ZBJSLbl 6:"1.SZ→ XY":"2.XY→ SZ":?S:?N:Prog“SUB0”1÷P→C:(P-R)÷(2HPR) →D:180÷π→E:N=1 =>Goto 1: Goto 2Lbl 1:?Z: Abs(S-O)→W: Prog"SUB1":"XS=":X◢"YS=":Y◢"FS=":F-90 ►DMS◢“XC” ?C: “YC” ? E:0→I:0→J:Pol(X-C,Y-E):“I=”:I◢If J∠0: Then “J=”: J+360►DMS◢IfEndIf J >0:Then “J=” :J►DMS◢IfEnd:Goto 6Lbl 2?X:?Y:X→I:Y→J:Prog"SUB2":O+W→S:Cls:"S=":S◢"Z=":Z◢Goto 6正算子程序 SUB10.1739274226→A: 0.3260725774→B: 0.0694318442→K: 0.3300094782→L: 1-L→F: 1-K→M:U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW(C+FWD))+Acos(G+QEMW(C+MWD)))→X: V+W(Asin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G+QEMW(C+MWD))) →Y:G+QEW(C+WD)+90→F: X+Zcos(F)→X: Y+Zsin(F)→Y反算子程序 SUB2 G-90→T(Y-V)cosT-(X-U)sin(T) →WAbs(W)→W:0→ZLbl6:Prog "SUB1"T+QEW(C+WD) →L: (J-Y)cos(L)-(I-X)sin(L)→ZIF Abs(Z)<1E-6:Then0→Z:Prog "SUB1":(J-Y)÷sin(F)→Z:Else W+Z→W:Goto6:IfEnd数据库子程序 SUB0Goto 1(线元可输入多条,分离式可在前多加一位,匝道一样。
例:左幅为K129+500,右幅输线元参数里程为1129+500,其他不变,前面1为任意数字,计算机便于区分)Lbl 1:IF S<线元终点里程:Then@@@→O(线元起点里程) :@@@ →U(线元起点X坐标):@@@→V(线元起点Y坐标):@@@→G(线元起点计算方位角):@@@→P(线元起点半径):@@@→R(线元止点半径):@@@→H(线元长度):@@@→Q(线元左、右偏标志,左偏-1,右偏1,直线为0):Return:IfEndIF S<线元终点里程:Then@@@→O(线元起点里程) :@@@ →U(线元起点X坐标):@@@→V(线元起点Y坐标):@@@→G线元(起点计算方位角):@@@→P(线元起点半径):@@@→R(线元止点半径):@@@→H(线元长度):@@@→Q(线元左、右偏标志,左偏-1,右偏1,直线为0):Return:IfEnd一程序功能本程序由一个主程序(ZBJS)和3个子程——正算子程序(SUB1)、反算子程序(SUB2) 、数据库子程序(SUB0)构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。
另外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲线任意里程中边桩坐标进行正反算本程序也可以在CASIO fx-4500P计算器及 CASIO fx-4850P计算器上运行二、使用说明1、规定 (1) 以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0 (2) 当所求点位于中线时,Z=0;当位于中线左侧时,Z取负值;当位于中线中线右侧时,Z取正值 (3) 当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替 (4) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径 (5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径止点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径 (6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径2、输入与显示说明 输入部分: 1. SZ => XY 2. XY = > SZ S ? 选择里程 ,N?,Z?左或右偏距选择计算方式,1.表示进行由里程、边距计算坐标 ;输入2表示由坐标反算里程和边距 显示部分: XS=××× 正算时,计算得出的所求点的X坐标 YS=××× 正算时,计算得出的所求点的Y坐标 FS=××× 正算时,所求点对应的中线点的切线方位角XC=××× 测站点X值YC=××× 测站点Y值 I=XXX 测站到放样点距离J=XXX 测站到放样点方位角 S=××× 反算时,计算得出的所求点的里程 Z=××× 反算时,计算得出的所求点的边距三 算例请到 有算例注:1.本程序根据空间里程序改编而成,并非本人原创2.正算跨线元计算正确,反算时跨线元计算第一次结果错误,,反应速度比一般输出结果慢,给出结果S=XXX为输入坐标的线元概略里程,在进行计算,显示结果*近似里程*,里程及偏距误差0.001m.,可更改数据(1E-6)改为(1E-3),速度稍快一点。
3.本程序可进行偏角法放样4.输入每行数据看数据输完毕没有,输完不要忘记按(EXE)5.使用者需细心输入,有问题在以下网址查找原因 0:4→Dimz:Cls"1.SZ→XY""2.XY→SZ"?→N:Cls"XO"?U: "YO"?V: "SO"?O:"FO"?G: "LS"?H: "RO"?P:"RN"?R:?Q1÷P→C:(P-R)÷(2HPR) →D:180÷π→EN=2=>Goto 2LbI 1:Cls:?SS=0=>Goto 0 (注:當S輸入0時,程序會由LbI 0開始重新運行)?Z:Abs(S-O)→WProg"SUB1":Cls"XS=":X◢"YS=":Y◢"FS=":F-90 ►DMS◢Goto 1LbI 2:Cls:?XX=0=>Goto 0 (注:當X輸入0時,程序由會LbI 0開始重新運行)?Y:X→I:Y→JProg"SUB2":O+W→S:Cls"S=":S◢"Z=":Z◢Goto 2注:紅色部可以不要,亦可以要,它的作用是將S或X輸入0時,程序會重新由頭開始運行,(即是可以計算下段線元)SUB1(子程序名)0.1739274226→A:0.3260725774→B0.0694318442→K:0.3300094782→L1-L→F:1-K→MG+QEKW(C+KWD)→Z[1]G+QELW(C+LWD)→Z[2]G+QEFW(C+FWD)→Z[3]G+QEMW(C+MWD)→Z[4]A×cos(Z[1])→X (剩號可省略)X+Bcos(Z[2])→XX+Bcos(Z[3])→XX+Acos(Z[4])→XU+WX→XAsin(Z[1])→YY+Bsin(Z[2])→YY+Bsin(Z[3])→YY+Asin(Z[4])→YV+WY→YG+QEW(C+WD)+90→FX+Zcos(F)→XY+Zsin(F)→YSUB2(子程序名)G-90→T(Y-V)cos(T)-(X-U)sin(T)→WAbs(W)→W:0→ZLbI 4:Prog"SUB1"T+QEW(C+WD)→L(J-Y)cos(L)-(I-X)sin(L)→ZIf Abs(Z)<1E-6:Then 0→Z :Prog"SUB1"(J-Y)÷sin(F)→ZElse W+Z→W:Goto 4:IfEnd注:1E-6即是10的負6次方,亦即是等於0.000001輸入時按SHIFT---log---(-)---6亦可直接將If Abs(Z)<1E-6寫成If Abs(Z)<0.000001注意:本程序是根據yhhf編寫的4800P改寫而成,以下是源程序及算例大家有問題亦可在以下網址查看及向yshf發問 fx-4800P计算器)程序一、程序功能 本程序由一个主程序(TYQXJS)和两个子程——正算子程序(SUB1)、反算子程序(SUB2)序构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。
另外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲线任意里程中边桩坐标进行正反算本程序也可以在CASIO fx-4500P计算器及 CASIO fx-4850P计算器上运行 特别申明:(1). 适用于弧长小于2倍半径的各种线元坐标正反算,精度优 于1mm; (2). 在引用该核心计算部分时,请注明来源二、源程序1.主程序(TYQXJS)"1.SZ => XY":"2.XY => SZ":N:U"X0":V"Y0":O"S0":G"F0":H"LS":P"R0":R"RN":Q。
