曲线任意里程中边桩坐标正反算5800P(无数据库)
TYQXJS(主程序名)
LbI 0:4→Dimz:Cls    (扩充4个变量)
"1.SZ→XY"
"2.XY→SZ":"N=1 or 2"?N:Cls
"X0"?U: "Y0"?V: "S0"?O:"F0"?G: "LS"?H: "R0"?P:"RN"?R:?Q
1÷P→C(P-R)÷(2HPR) →D180÷π→E
N=1=>Goto 1:N=2=>Goto 2
LbI 1:Cls: "DK="?S
S=0=>Goto 0  (:S输入0,程序会由LbI 0开始重新运算)
?Z:Abs(S-O)→W
Prog"SUB1":Cls
"XS=":X
"YS=":Y
"FS=":F-90 ►DMS
LbI 2:Cls:?X                     
X=0=>Goto 0  (:X输入0,程序由会LbI 0开始重新运算)
?Y:X→I:Y→J
Prog"SUB2":O+W→S:Cls
"S=":S
"Z=":Z
Goto 2
:红部可以不要,亦可以要,它的作用是将SX输入0,程序会由开头重新运行
SUB1  (正算子程序名)
0.1739274226→A:0.3260725774→B
0.0694318442→K:0.330009482→L
1-L→F:1-K→M
G+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])→X
X+Bcos(Z[3])→X
X+Acos(Z[4])→X
U+WX→X
Asin(Z[1])→Y
Y+Bsin(Z[2])→Y
Y+Bsin(Z[3])→Y
Y+Asin(Z[4])→Y
V+WY→Y
G+QEW(C+WD)+90→F
X+Zcos(F)→X
Y+Zsin(F)→Y
SUB2(反算子程序名)
G-90→T
(Y-V)cos(T)-(X-U)sin(T)→W
Abs(W)→W:0→Z
LbI 4:Prog"SUB1"
T+QEW(C+WD)→L
(J-Y)cos(L)-(I-X)sin(L)→Z
If Abs(Z)1E-6:Then 0→Z :Prog"SUB1"
(J-Y)÷sin(F)→Z
Else 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发问
liang/celiang/article_view.asp?id=380&author=yshf
※曲线任意里程中边桩坐标正反算(CASIO fx-4800P计算器)程序
一、程序功能
        本程序由一个主程序(TYQXJS)和两个子程——正算子程序(SUB1)、反算子程序(
SUB2)序构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线
元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲
率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。另
外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲
线任意里程中边桩坐标进行正反算。本程序也可以在CASIO fx-4500P计算器及 CASIO fx-4850P计算器上运行。
  特别申明:(1). 适用于弧长小于2倍半径的各种线元坐标正反算,精度优 1mm
                      (2). 在引用该核心计算部分时,请注明来源。
二、源程序
1.正则化坐标主程序(TYQXJS)
"1.SZ => XY""2.XY => SZ"NU"X0"V"Y0"O"S0"G"F0"H"LS"P"R0"R"
RN"QC=1÷PD=(P-R)÷(2HPR)E=180÷πN=1=>Goto 1≠>Goto 2Δ←┘
Lbl 1{SZ}SZW=Abs(S-O)Prog "SUB1"X"XS"=X
Y"YS"=Y
F"FS"=F-90
Goto 1←┘
Lbl 2{XY}XYI=XJ=YProg "SUB2"S"S"=O+W
Z"Z"=Z
Goto 2

2. 正算子程序(SUB1)
A=0.1739274226B=0.3260725774K=0.0694318442L=0.3300094782F=1-L
M=1-KX=U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW
(C+FWD))+Acos(G+QEMW(C+MWD)))Y=V+W(Asin(G+QEKW(C+KWD))+Bsin(G+
QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G+QEMW(C+MWD)))F=G+QEW(C+
WD)+90X=X+ZcosFY=Y+ZsinF

3. 反算子程序(SUB2)
T=G-90W=Abs((Y-V)cosT-(X-U)sinT)Z=0Lbl 0Prog "SUB1"L=T+QEW(C+
WD)Z=(J-Y)cosL-(I-X)sinLAbsZ<1E-6=>Goto1≠>W=W+ZGoto 0Δ←┘
Lbl 1Z=0Prog "SUB1"Z=(J-Y)÷sinF

三、使用说明
1、规定
        (1) 以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0
        (2) 当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右
侧时,Z取正值。
        (3) 当线元为直线时,其起点、止点的曲率半径为无穷大,以1045次代替。
        (4) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
弧的半径。
        (5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以1045
次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半
径为无穷大,以1045次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
        (6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。

2、输入与显示说明
      输入部分:
      1. SZ => XY
      2. XY = > SZ
      N ?  选择计算方式,输入1表示进行由里程、边距计算坐标 ;输入2表示由坐标反算
              里程和边距。
    X0 ?线元起点的X坐标
    Y0 ?线元起点的Y坐标
    S0 ?线元起点里程
    F0 ?线元起点切线方位角
    LS ?线元长度
    R0 ?线元起点曲率半径
    RN ?线元止点曲率半径
    Q   线元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0
      DK= 正算时所求点的里程
Z ?正算时所求点距中线的边距(左侧取负,值右侧取正值,在中线上取零)
      X ?反算时所求点的X坐标
      Y ?反算时所求点的Y坐标
      显示部分:
      XS=×××    正算时,计算得出的所求点的X坐标
      YS=×××    正算时,计算得出的所求点的Y坐标
      FS=×××    正算时,所求点对应的中线点的切线方位角
      S=×××    反算时,计算得出的所求点的里程
      Z=×××    反算时,计算得出的所求点的边距

四、算例
        某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组
成,各段线元的要素(起点里程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

谢谢发贴:+22 【测量空间】liang[0

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。