跪求卡西欧5800的公路测量程序

如题所述

  一、 坐标计算源程序
  1.主程序(TYQXjs)
  "1.SZ => XY":"2.XY => SZ":N:U"X0":V"Y0":O"S0":G"F0":H"LS":P"R0":R"RN":Q:C=1÷P:D=(P-R)÷(2HPR):E=180÷π:N=1=>Goto 1:≠>Go to 2Δ←┘
  Lbl 1:{SZ}:SZ:W=Abs(S-O):Prog "SUB1":X"XS"=X◢
  Y"YS"=Y◢
  Goto 1←┘
  Lbl 2:{XY}:XY:I=X:J=Y:Prog "SUB2":S"S"=O+W◢
  Z"Z"=Z◢
  Goto 2

  2. 正算子程序(SUB1)
  A=0.1739274226:B=0.3260725774:K=0.0694318442:L=0.3300094782:F=1-L:M=1-K:X=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)+90:
  X=X+ZcosF:Y=Y+ZsinF
  3. 反算子程序(SUB2)
  T=G-90:W=Abs((Y-V)cosT-(X-U)sinT):Z=0:Lbl 0:Prog "SUB1":L=T+QEW(C+WD):Z=(J-Y)cosL-(I-X)sinL:AbsZ<1E-6=>Goto1:≠>W=W+Z:Goto 0Δ←┘
  Lbl 1:Z=0:Prog "SUB1":Z=(J-Y)÷sinF
  二、使用说明
  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
  N ? 选择计算方式,输入1表示进行由里程、边距计算坐标 ;输入2
  表示由坐标反算里程和边距。
  X0 ?线元起点的X坐标
  Y0 ?线元起点的Y坐标
  S0 ?线元起点里程
  F0 ?线元起点切线方位角
  LS ?线元长度
  R0 ?线元起点曲率半径
  RN ?线元止点曲率半径
  Q ? 线 元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)
  S ? 正算时所求点的里程
  Z ?正算时所求点距中线的边距(左侧取负,值右侧取正值,
  在中线上取零)
  X ?反算时所求点的X坐标
  Y ?反算时所求点的Y坐标
  显示部分:
  XS=××× 正算时,计算得出的所求点的X坐标
  YS=××× 正算时,计算得出的所求点的Y坐标
  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=9737.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.000 0238 Z= 3.00898694
  3、 本人修改意见:
  以上程序正算、反算看来似乎很正确,满足测量精度要求。但要明白以下三点:
  <1>是不是对于任意曲线正、反算都可以达到精度要求?
  <2>字母代表的意思?推导过程?会不会出错?
  <3>应该再补充些什么功能?怎么才能提高精度要求?
  修改后,程序没有任何条件限制,且运行正常,完全满足客户精度要求,很实用!愿与大家分享!
  4 、例题
  圆曲线半径R为700米,圆曲线长为350米,曲线右转,起点里程为DK1+200,坐标为(200,456), 切线方位角为120°15′26.6〃计算DK1+520右100米点坐标,并反算桩号、左右距。
  读者可自算,源程序计算结果:
  正算: X=-73.03846 Y=603.3210
  反算: W= 1512.069875 Z=95.4193 (明显不对,超出范围了)
  按W= 1512.069875 Z=95.4193计算坐标:坐标也不对,那肯定是错了。
温馨提示:答案为网友推荐,仅供参考
相似回答