顶底预测师 江宏:2----FX5800P全线任意里程中边桩坐标正反算(加了数据库)

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 02:35:11
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.net/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