FX5800P全线任意里程中边桩坐标正反算(加了数据库) |
本程序非本人原创,结合上传者长处,进行改编,愿收获和大家共享,不足之处多多指教。希望过路神仙把竖曲线加进去带算隧道超欠挖,谢谢 曲線任意里程中邊樁坐標正反算5800p 本程序由内蒙@文哥和师父阿玖哥共同改编完成 主程序 ZBJS Lbl 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 2 Lbl 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◢ IfEnd If J >0:Then “J=” :J?DMS◢ IfEnd:Goto 6 Lbl 2 X:?Y:X→I:Y→J:Prog"SUB2":O+W→S:Cls:"S=":S◢ "Z=":Z◢ Goto 6 正算子程序 SUB1 0.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) →W Abs(W)→W:0→Z Lbl6:Prog "SUB1" T+QEW(C+WD) →L: (J-Y)cos(L)-(I-X)sin(L)→Z IF Abs(Z)<1E-6:Then0→Z:Prog "SUB1":(J-Y)÷sin(F)→Z:Else W+Z→W:Goto6:IfEnd 数据库子程序 SUB0 Goto 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:IfEnd IF 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.使用者需细心输入,有问题在以下网址查找原因。 http://www./celiang/article_view.asp?id=380&author=yshf 6.1E-6即是10的負6次方,亦即是等於0.000001 7.希望高人指点把此程序改为数据库形式,并加入高程,希望哪位神仙路过指点一下,把程序改为坐标、高程一体的这程序就完美了,程序中不足之处请指点。 四、算例 某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组 成,各段线元的要素(起点里程S0、起点坐标X0 Y0、起点切线方位角F0、线元长度 LS、起点曲率半径R0、止点曲率半径RN、线 元左右偏标志Q)如下: S0 X0 Y0 F0 LS R0 RN Q 500.000 19942.837 28343.561 125 16 31.00 269.256 1E45 1E45 0 769.256 19787.340 28563.378 125 16 31.00 37.492 1E45 221.75 -1 806.748 19766.566 28594.574 120 25 54.07 112.779 221.75 221.75 -1 919.527 19736.072 28701.893 91 17 30.63 80.285 221.75 9579.228 -1 999.812 19744.038 28781.659 80 40 50.00 100.000 1E45 1E45 0 1、正算 (注意:略去计算方式及线元要素输入,请自行根据所求点所在的线元输入线元 要素) S=700 Z=-5 计算得 XS=19831.41785 YS=28509.72590 S=700 Z=0 计算得 XS=19827.33592 YS=28506.83837 S=700 Z= 5 计算得 XS=19823.25398 YS=28503.95084 S=780 Z=-5 计算得 XS=19785.25749 YS=28575.02270 S=780 Z=0 计算得 XS=19781.15561 YS=28572.16358 S=780 Z= 5 计算得 XS=19777.05373 YS=28569.30446 S=870 Z=-5 计算得 XS=19747.53609 YS=28654.13091 S=870 Z=0 计算得 XS=19742.68648 YS=28652.91379 S=870 Z= 5 计算得 XS=19737.83688 YS=28651.69668 S=940 Z=-5.123 计算得 XS=19741. 59118 YS=28722.05802 S=940 Z=0 计算得 XS=19736.47687 YS=28722.35642 S=940 Z= 3.009 计算得 XS=19733.47298 YS=28722.53168 2、 反算 X=19831.418 Y=28509.726 计算得 S=699.9999974 Z= -5 .00018164 X=19827.336 Y=28506.838 计算得 S=699.9996493 Z= 0.000145136 X=19823.25398 Y=28503.95084 计算得 S=699.9999985 Z= 5.000003137 X=19785.25749 Y=28575.02270 计算得 S=780.0000035 Z= -5 .000001663 X=19781.15561 Y=28572.16358 计算得 S=780.0000025 Z=- 0.000002979 X=19777.05373 Y=28569.30446 计算得 S=780.0000016 Z= 4.99999578 X=19747.536 Y=28654.131 计算得 S=870.0001137 Z= -4.99941049 X=19742.686 Y=28652.914 计算得 S=870.0003175 Z=- 0.00041814 X=19737.837 Y=28651.697 计算得 S=870.0002748 Z= 4.999808656 X=19741.5912 Y=28722.0580 计算得 S=939.9999786 Z= -5.123024937 X=19736.4769 Y=28722.3564 计算得 S=939.9999862 Z=- 0.000027710 X=19733.4730 Y=28722.5317 计算得 S=940.0000238 Z= 3.00898694 |