• 曲线任意里程中边桩坐标正反算及放样fx-4850程序(第五次修改)


    有个4800线元法程序,改成5800后,运行后计算某点1的坐标不对,再次运行同样计算该点的坐标,又是对的了,同样计算某点2仍是第二次才能算对,谁能知道怎么回事?
    下面是该4800程序
         曲线任意里程中边桩坐标正反算及放样fx-4850程序(第五次修改) 
    本程序是在yshf及hangniu1973两位师傅的成果上作的一次改动,修改内容主要有一下几点:
    1、在变量符号上修改,目的是更能与工地实际结合;
    2、把原主程序分为两个,更能灵活调用;
    3、加入放样程序,做到坐标计算到放样一体化;
    4、使得整个测量放样过程更加简单。
    附件(点击下载):
    GAUSSLE坐标正反算fx-4850程序
    源程序
    1.正算主程序  GSZS
    I"X0":S"Y0":O"K0":G"F0":H"KN":P"R0":R"RN":Q”Q(-Z  +Y)” :
    D=(P-R)÷(2(H-O)PR):
    KL”L(-Z  +Y)” :M”ANG(YJJ)”=90:(注:此处若不给M赋值,则可计算斜交点)
    J=Abs(K-O):Prog"SUB1":
    ”FWJ=”:F=F-M:”X=”:X=X:Pause0: ”Y=”:Y=Y◢ 
    2. 反算主程序  GSFS
    XY:Z[2]=X:Z[3] =Y:
    I"X0":S"Y0":O"K0":G"F0":H"KN":P"R0":R"RN":Q”Q(-Z  +Y)” :
    D=(P-R)÷(2(H-O)PR):
    J=Abs((Y-S)cos(G-90)-(X-I)sin(G-90)):
    L=0:M”M(YJJ)”=90:
    Lbl 0:Prog "SUB1":
    L=(Z[3]-Y)cos(G-90+QJ(1÷P+JD)×180÷π)-(Z[2]-X)sin(G-90+QJ(1÷P +JD) ×180÷π):
    AbsL<1E-6=>Goto1:≠>J=J+L:Goto 0Δ←┘
    Lbl 1:L=0:Prog "SUB1":L=(Z[3]-Y)÷sinF:
    ”K=”:K=O+J:Pause0:”L=”:L=L◢
    3. 正算子程序(SUB1)
    Defm 4:
    A=0.1184634425:B=0.2393143352:Z[4]=0.2844444444:C=0.0469100770:E=0.2307653449:Z[1]=0.5:
    X=I+J(Acos(G+QCJ(1÷P+CJD)×180÷π)+Bcos(G+QEJ(1÷P+EJD)×180÷π)+Z[4]cos(G+QZ[1]J(1÷P+Z[1]JD)×180÷π)+Bcos(G+Q(1-E)J(1÷P+(1-E)JD)×180÷π)+Acos(G+Q (1-C)J(1÷P+(1-C)JD) ×180÷π)):
    Y=S+J(Asin(G+QCJ(1÷P+CJD)×180÷π)+Bsin(G+QEJ(1÷P+EJD)×180÷π)+Z[4]sin(G+QZ[1]J(1÷P+Z[1]JD)×180÷π)+Bsin(G+Q(1-E)J(1÷P+(1-E)JD)×180÷π)+Asin(G+Q (1-C)J(1÷P+(1-C)JD) ×180÷π)):
    F=G+QJ(1÷P+JD) ×180÷π+M:X=X+LcosF:Y=Y+LsinF
    4. 曲线元要素数据库:DAT-M
    K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘
    K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘ 
    K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘
    K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘
    K≥O=>K≤H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘
                         ……………………………
    K≥O=>K≤H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘                  
    (注:如有多个曲线元要素继续添加入数据库DAT-M中)
    5、M线(坐标正算)组合程序  MG-ZB
    Prog”DAT-M”:Prog”GSZS”
    6、M线(坐标计算-放样)组合程序  MG-FY
    Prog”MG-ZB”:Prog”LTKZD”: Prog”FY”
    7、M线(坐标反算)组合程序  M-GSFB
    Prog”DAT-M”:Prog”GSFS”
    说明:
    一、程序功能及原理
    1.功能说明:
    本程序由两个主程序——正算主程序(GSZS)、反算主程序(GSFS)和两个子程——正算子程序(SUB1)、线元数据库(DAT-M)构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、终点里程、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。本程序可以在CASIO fx-4800P计算器及 CASIO fx-4850P计算器上运行。由于加入了数据库(DAT-M),可实现坐标正反算的全线贯通。
        组合程序5可实现M线的正算贯通,组合程序7可实现M线的反算贯通,组合程序6可实现坐标计算到放样一体化。
    2.计算原理:
    利用Gauss-Legendre 5点通用公式计算线路中边桩坐标并计算放样数据。
        利用待求点至线元起点切线作垂线,逐次迭代趋近原理反算里程及边距。
    二、使用说明
    1、规定
          (1) 以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时, Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
          (2) 当所求点位于中线时,L=0;当位于中线左侧时,L取负值;当位于中线右侧时,L取正值。
          (3) 当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
        (4) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径。
    (5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
           (6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
    (7)曲线元要素数据库(DAT-M)可根据线型不同分为各个线元段输入到DAT-M中,即分为直线段、缓和曲线、圆曲线等。 
    (8)正算时可仅输入里程和边距及右交角可实现全线计算,但反算时只能通过首先输入里程K值读取数据库DAT-M,计算器自动将里程K所在线元数据赋给反算主程序GSFS进行试算,试算出的里程和边距须带入正算主程序GSZS中计算坐标,若坐标吻合则反算正确。 
    2、输入与显示说明
       (1)输入部分:
    X0 ?线元起点的X坐标 
         Y0 ?线元起点的Y坐标 
         K0 ?线元起点里程
         F0 ?线元起点切线方位角
         KN ?线元终点里程
         R0 ?线元起点曲率半径
         RN ?线元止点曲率半径
         Q ?  线 元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)
          K ? 正算时所求点的里程
          L ?  正算时所求点距中线的边距(左侧取负值,右侧取正值,在中线上取零)
       ANG?正算边桩时左右边桩连线与线路中线的右交角      
    X ? 反算时所求点的X坐标
           Y ? 反算时所求点的Y坐标
        M ?  斜交右角
        线元要素数据库中K≥O=>K<H=>中的O和H分别为该段线元起点里程和终点里程
    A、 B、Z[4] 是Gauss-Legendre求积公式中的插值系数
        C 、E、Z[1] 是Gauss-Legendre求积公式中的求积节点
    (2)显示部分:       
    X=×××    正算时,计算得出的所求点的X坐标
           Y=×××    正算时,计算得出的所求点的Y坐标
           K=×××    反算时,计算得出的所求点的里程
           L=×××    反算时,计算得出的所求点的边距
    三、算例
    某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组成,各段线元的要素(起点里程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 
    (注:该算例中线元要素Ls为程序修改前须输入的线元长度,程序修改后改为输入线元终点里程KN)
    放样程序  FY
    U”XJ”:V”YJ”:W”XH”:Z”YH”:XY:I=W-U:J=Z-V:Pol(I,J):J<0=>J=J+360Δ
    “HSJL=”:I◢
    O”HF”=J:X=0=>U=U+LCos(J+P”μ”):
    V=V+LSin(J+P”μ”):
    ”X=”:U:Pause0:”Y=”:V:≠>I=X-U:J=Y-V: Pol(I,J):J<0=>J=J+360:Δ
    H”QF”=J:J=H-O:J<0=>J=J+360:Δ
    “ANG=”:J→DMS (该处不输Pause0语句亦可实现“ANG=”和“QSJL=”的同时出现)
    “QSJL=”:I
    凌铁大桥控制点数据库  LTKZD
    A=21:B=22:C=23:D=24:E=25:F=26:G=27:H=28:I=29←┘
    T “ZJDH”:←┘
    T=11=>U=****:V=****⊿←┘
    T=12=>U=****:V=****⊿←┘
    T=13=>U=****:V=****⊿←┘
    T=15=>U=****:V=****⊿←┘
    T= 4 =>U=****:V=****⊿←┘
    T= A=>U=****:V=****⊿←┘
    T= B=>U=****:V=****⊿←┘
    T= C=>U=****:V=****⊿←┘
                         ……………………………
    (注:如有多个控制点继续添加入数据库LTKZD中)
    N “HSDH”:←┘
    N=11=>W=****:Z=****⊿←┘
    N=12=>W=****:Z=****⊿←┘
    N=13=>W=****:Z=****⊿←┘
    N=15=>W=****:Z=****⊿←┘
    N= 4 =>W=****:Z=****⊿←┘
    N= A=>W=****:Z=****⊿←┘
    N= B=>W=****:Z=****⊿←┘
    N= C=>W=****:Z=****⊿←┘
                         ……………………………
    (注:如有多个控制点继续添加入数据库LTKZD中)
    组合程式  LTFY
    Prog ”LTKZD”: Prog ”FY”
    说明:
    一、程序功能及原理
    1、功能说明:
    FY程序有两个功能,当前视点坐标X输入为零时,程式执行转点功能,即首先通过全站仪测定任意转点距置镜点距离L及置镜点与转点连线和置镜点与后视点连线的夹角P”μ”并输入计算器,即可计算出任意转点坐标;另一功能是坐标放样,即输入放样点X、Y坐标,从而计算出与置镜点距离 “QSJL=”以及全站仪归零放样拨角“ANG=”(前视方位角-后视方位角)。
        凌铁大桥控制点数据库LTKZD功能是与FY程序配合后,可实现坐标放样时仅输入置镜点、后视点的编号,从而减少其数据的大量输入。
    2、计算原理:
        利用坐标计算和方位角的基本知识以及计算器极坐标转换功能键POL
    二、使用说明
    1、规定
        当前视点坐标X输入为零时,程式执行转点功能
    2、输入与显示说明
    (1)输入部分:
    XJ ?  置镜点X坐标
    YJ ?  置镜点Y坐标
    XH ?  后视点X坐标
    YH ?  后视点Y坐标
    X  ?  放样点X坐标
    Y  ?  放样点Y坐标
    L  ?  实测转点距置镜点距离
    P”μ”  ?  实测置镜点与转点连线和置镜点与后视点连线的夹角
    T  ?  置镜点点号ZJDH
    N  ?  后视点点号HSDH
    11、12、13、15、4、A、B、C、D、E、F、G、H、I分别为凌铁大桥控制点点号,计算输入时按以上数字或字母输入计算器即可
    (2)显示部分
    HSJL=****    后视距离(置镜点与后视点之间距离)
    ANG= ****    全站仪归零放样拨角
    QSJL=****    前视距离(置镜点与放样点之间距离)
    X=    ****    转点X坐标
    Y=    ****    转点Y坐标
    三、其它说明
    1、若需要编制另一线路控制点程序,仅需新建另一数据库子程序LTKZD,新建时仅需改变上文中红色显示数据即可。
    2、程式中11~15、及A~I均为控制点编号,程式开头首先给A、B赋值:A=21:B=22等,目的是为了在程式运行要求输入点号时能直接输入字母A、B、C等。
     

    GAUSSLE5反算贯通程序(fx-4850) 
    本文是在第五次修改版的基础上的又一次改进,目的是在少占内存的情况下实现反算全线贯通 
    源程序
    1.M线反算贯通主程序  FSGT
    XY:Z[2]=X:Z[3]=Y: ←┘
    K=O1:Prog”AB”:AB<θ=> Prog”FSLC”:Gotoθ⊿←┘
    K=O2:Prog”AB”:AB<θ=> Prog”FSLC”:Gotoθ⊿←┘
    K=O3:Prog”AB”:AB<θ=> Prog”FSLC”:Gotoθ⊿←┘
    ……………………………(注:如有多个线元则继续添加,其中O1 、O2、O3为第一、二、三段线元的起点里程,必须是具体数字)
    Lbl θ
    2. 里程迭代子程序  FSLC
    K=O: Lbl 1:I=T:J=Abs(K-O):L=θ:M=θ: Prog”SUB1”:I=Z[2]-X:J=Z[3]-Y:Pol(I,J):
    J=J-F:A=IcosJ:K=K+A:AbsA≥0.001=> Goto1: ≠>”K=”:K:Pauseθ:“L=”:
    L=IsinJ
    3. 垂距计算子程序  AB
    Prog”DAT-M”:T=I: D=(P-R)÷(2(H-O)PR):J=Abs(H-O):L=θ: M=θ: Prog”SUB1”:
    I=Z[2]-I:J=Z[3]-S:Pol(I,J):J=J-G:A=IcosJ:
    I=Z[2]-X:J=Z[3]-Y:Pol(I,J):J=J-F:B=IcosJ
    说明:
    一、程序功能及原理
    1.功能说明:
       可实现M线的反算贯通。
    2.计算原理:
        见第五次修改版
    二、使用说明
        见第五次修改版
    三、注意事项    
    1、”SUB1”和 ”DAT-M”子程序详见第五次修改版
    2、程序中θ表示数字零,O表示字母,请注意区分

  • 相关阅读:
    网络安全笔记-文件包含
    flink篇——Time和watermark机制
    Python Selenium 之数据驱动测试的实现!
    本周遇到的一些问题记录
    brython | 初探鼠标事件-1:点击事件
    助力工业物联网,工业大数据之服务域:Shell调度测试【三十三】
    PCL 格网最低点滤波
    【Redis】1、NoSQL之Redis的配置及优化
    Spark之【基础介绍】
    运动用什么耳机不影响听力?运动骨传导耳机是最好的选择
  • 原文地址:https://blog.csdn.net/s13166803785/article/details/125556331