含数据库、测站放样计算(第五次修改-正式版) 1.加编数据库及计算总调度程序,计算中不必逐项输入"线元要素",提高运算速度,避免现场忙中出错 2.可加入多条线路的数据库,内业输入数据,外业一目了然 3.计算直观,人性化 4.正算直接输入里程和边距,反算输入近似里程便可 5.增加了“计算点与测站点”的距离和方位角计算语句,方便直接放样 6.愿收获与大家共享,同时也希望大家提出心得和宝贵建议 7.核心计算程序摘自“yshf” 一.改动后的程序清单,增设数据库程序,可输入n条线路的数据库 1.(QXZDJS 计算总调度程序) M=1=>Prog "SJK1":Prog "SUBSJK"△←┘ ........... M=n=>Prog "SJKn":Prog "SUBSJK"△←┘
2.(SJK1 数据库程序) "1.SZ => XY":"2.XY => SZ":{N,S}:N:S"DKI"←┘ S≤本线元终点里程=>U=本线元起点X坐标:V=本线元起点Y坐标:G=本线元起点正切线方位角:P=本线元起点曲率半径:R=本线元终点曲率半径:O=本线元起点里程:H=本线元终点里程:Q=本线元左直右偏向(0或1、-1):Goto0Δ←┘ S≤下一线元终点里程=>O=。。。。。。。。。。。。。。。。: Goto0Δ←┘ LB1 0
3.(SUBSJK 运算主程序) {UVGPROHQ}:U"XA":V"YA":G"FA":P"RA":R"RB":O"DKA":H"DKB":Q←┘ Deg:S>H=>Goto AΔD=(P-R)÷2PR(H-O):N=1=>Goto 1:≠>Goto 2Δ←┘ Lbl 1:{Z}:Z:W=Abs(S-O):Prog "SUB1":"XS=":X◢ "YS=":Y◢ "QX-FWJ=":F=F-90←DMS◢ I=0:J=0:Pol(X-C"XC",Y-E"YC"):J<0=>J=J+360:Δ“FWJ=”:J←DMS◢ “I=”:I◢ Goto A←┘ Lbl 2:{XY}:I=X:J=Y:Prog "SUB2":"S=":S=O+W◢ "Z=":Z◢ Lbl A
4. (SUB1 正算子程序) A=0.1739274226:B=0.3260725774:K=0.0694318442:L=0.3300094782:X=U+W(Acos(G+180QKW(1÷P+KWD)÷π)+Bcos(G+180QLW(1÷P+LWD)÷π)+Bcos(G+180(1-L)QW(1÷P+(1-L)WD)÷π)+Acos(G+180(1-K)QW(1÷P+(1-K)WD)÷π)):Y=V+W(Asin(G+180QKW(1÷P+KWD)÷π)+Bsin(G+180QLW(1÷P+LWD)÷π)+Bsin(G+180(1-L)QW(1÷P+(1-L)WD)÷π)+Asin(G+180(1-K)QW(1÷P+(1-K)WD)÷π)):F=G+180QW(1÷P+WD)÷π+90:X=X+ZcosF:Y=Y+ZsinF
5.(SUB2 反算子程序) T=G-90:W=Abs((Y-V)cosT-(X-U)sinT):Z=0:Lbl 0:Prog "SUB1":L=T+180QW(1÷P+WD)÷π:Z=(J-Y)cosL-(I-X)sinL:AbsZ<1÷10^6=>Goto1:≠>W=W+Z:Goto 0Δ←┘ Lbl 1:Z=0:Prog "SUB1":Z=(J-Y)÷sinF
二. 使用说明: 1.把所有相关的”线元要素“依次输入”SJK“,如果有多条线路,可把“SJK”分成SJK1...SJKn等n条线路数据库,然后对应“计算总调度程序”中的M1...Mn备用 2.运算时直接调用“SJK”运行,程序提示输入里程“S”?时,正算直接输入待求点里程,反算输入所求点“近似“里程 3.如果在正算中途想进行反算,重新给”N“?赋值"2"便可 4.程序中“XC、YC”为测站坐标,“I=”、“FWJ=”为放样距离和方位角 5.程序中“QX-FWJ=”为计算点在中线上的正切线方位角,此方位角在新线路输入数据库时非常重要,我们在每输入完一段曲线元要素后,立即退出返回到“计算总调度程序(SUBSJK)”中,然后输入该段曲线元的终点里程,其计算出来的X,Y中桩坐标应该与设计图纸(当然是经过复查无误的图纸)上的该点中桩坐标一致,否则一定是哪个地方数据输入或者程序有误,这时候我们一定要把该计算点在中线上的正切线方位角“QX-FWJ=”记录下来为下一段曲线元要素数据输入服务,因为它就是下一段曲线元的起点正切线方位角,嘿嘿! 6.其它输入与"yshf"原程序一致 ----------------------------------------------------------------------- 附件:(原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":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:≠>Goto 2Δ←┘ Lbl 1:{SZ}:SZ:W=Abs(S-O):Prog "SUB1":X"XS"=X◢ Y"YS"=Y◢ F"FS"=F-90◢ 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坐标 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
|