| FX5800P全線(xiàn)任意里程中邊樁坐標正反算(加了數據庫) |
本程序非本人原創(chuàng ),結合上傳者長(cháng)處,進(jìn)行改編,愿收獲和大家共享,不足之處多多指教。希望過(guò)路神仙把豎曲線(xiàn)加進(jìn)去帶算隧道超欠挖,謝謝 曲線(xiàn)任意里程中邊樁坐標正反算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(線(xiàn)元可輸入多條,分離式可在前多加一位,匝道一樣。例:左幅為K129+500,右幅輸線(xiàn)元參數里程為1129+500,其他不變,前面1為任意數字,計算機便于區分) Lbl 1:IF S<線(xiàn)元終點(diǎn)里程:Then@@@→O(線(xiàn)元起點(diǎn)里程) :@@@ →U(線(xiàn)元起點(diǎn)X坐標):@@@→V(線(xiàn)元起點(diǎn)Y坐標):@@@→G(線(xiàn)元起點(diǎn)計算方位角):@@@→P(線(xiàn)元起點(diǎn)半徑):@@@→R(線(xiàn)元止點(diǎn)半徑):@@@→H(線(xiàn)元長(cháng)度):@@@→Q(線(xiàn)元左、右偏標志,左偏-1,右偏1,直線(xiàn)為0):Return:IfEnd IF S<線(xiàn)元終點(diǎn)里程:Then@@@→O(線(xiàn)元起點(diǎn)里程) :@@@ →U(線(xiàn)元起點(diǎn)X坐標):@@@→V(線(xiàn)元起點(diǎn)Y坐標):@@@→G線(xiàn)元(起點(diǎn)計算方位角):@@@→P(線(xiàn)元起點(diǎn)半徑):@@@→R(線(xiàn)元止點(diǎn)半徑):@@@→H(線(xiàn)元長(cháng)度):@@@→Q(線(xiàn)元左、右偏標志,左偏-1,右偏1,直線(xiàn)為0):Return:IfEnd 。。。。。。。。。。。。。。。。。。。。。。。。。。。 一程序功能 本程序由一個(gè)主程序(ZBJS)和3個(gè)子程——正算子程序(SUB1)、反算子程序( SUB2) 、數據庫子程序(SUB0)構成,可以根據曲線(xiàn)段——直線(xiàn)、圓曲線(xiàn)、緩和曲線(xiàn)(完整或非完整型)的線(xiàn) 元要素(起點(diǎn)坐標、起點(diǎn)里程、起點(diǎn)切線(xiàn)方位角、線(xiàn)元長(cháng)度、起點(diǎn)曲率半徑、止點(diǎn)曲 率半徑)及里程邊距或坐標,對該曲線(xiàn)段范圍內任意里程中邊樁坐標進(jìn)行正反算。另 外也可以將本程序中核心算法部分的兩個(gè)子程序移植到其它相關(guān)的程序中,用于對曲 線(xiàn)任意里程中邊樁坐標進(jìn)行正反算。本程序也可以在CASIO fx-4500P計算器及 CASIO fx-4850P計算器上運行。 二、使用說(shuō)明 1、規定 (1) 以道路中線(xiàn)的前進(jìn)方向(即里程增大的方向)區分左右;當線(xiàn)元往左偏時(shí), Q=-1;當線(xiàn)元往右偏時(shí),Q=1;當線(xiàn)元為直線(xiàn)時(shí),Q=0。 (2) 當所求點(diǎn)位于中線(xiàn)時(shí),Z=0;當位于中線(xiàn)左側時(shí),Z取負值;當位于中線(xiàn)中線(xiàn)右 側時(shí),Z取正值。 (3) 當線(xiàn)元為直線(xiàn)時(shí),其起點(diǎn)、止點(diǎn)的曲率半徑為無(wú)窮大,以10的45次代替。 (4) 當線(xiàn)元為圓曲線(xiàn)時(shí),無(wú)論其起點(diǎn)、止點(diǎn)與什么線(xiàn)元相接,其曲率半徑均等于圓 弧的半徑。 (5) 當線(xiàn)元為完整緩和曲線(xiàn)時(shí),起點(diǎn)與直線(xiàn)相接時(shí),曲率半徑為無(wú)窮大,以10的45 次代替;與圓曲線(xiàn)相接時(shí),曲率半徑等于圓曲線(xiàn)的半徑。止點(diǎn)與直線(xiàn)相接時(shí),曲率半 徑為無(wú)窮大,以10的45次代替;與圓曲線(xiàn)相接時(shí),曲率半徑等于圓曲線(xiàn)的半徑。 (6) 當線(xiàn)元為非完整緩和曲線(xiàn)時(shí),起點(diǎn)與直線(xiàn)相接時(shí),曲率半徑等于設計規定的 值;與圓曲線(xiàn)相接時(shí),曲率半徑等于圓曲線(xiàn)的半徑。止點(diǎn)與直線(xiàn)相接時(shí),曲率半徑等 于設計規定的值;與圓曲線(xiàn)相接時(shí),曲率半徑等于圓曲線(xiàn)的半徑。 2、輸入與顯示說(shuō)明 輸入部分: 1. SZ => XY 2. XY = > SZ S ? 選擇里程 ,N?,Z?左或右偏距。選擇計算方式,1.表示進(jìn)行由里程、邊距計算坐標 ;輸入2表示由坐標反算里程和邊距。 顯示部分: XS=××× 正算時(shí),計算得出的所求點(diǎn)的X坐標 YS=××× 正算時(shí),計算得出的所求點(diǎn)的Y坐標 FS=××× 正算時(shí),所求點(diǎn)對應的中線(xiàn)點(diǎn)的切線(xiàn)方位角 XC=××× 測站點(diǎn)X值 YC=××× 測站點(diǎn)Y值 I=XXX 測站到放樣點(diǎn)距離 J=XXX 測站到放樣點(diǎn)方位角 S=××× 反算時(shí),計算得出的所求點(diǎn)的里程 Z=××× 反算時(shí),計算得出的所求點(diǎn)的邊距 三 算例 注:1.本程序根據空間里程序改編而成,并非本人原創(chuàng )。 2.正算跨線(xiàn)元計算正確,反算時(shí)跨線(xiàn)元計算第一次結果錯誤,,反應速度比一般輸出結果慢,給出結果S=XXX為輸入坐標的線(xiàn)元概略里程,在進(jìn)行計算,顯示結果*近似里程*,里程及偏距誤差0.001m.,可更改數據(1E-6)改為(1E-3),速度稍快一點(diǎn)。 3.本程序可進(jìn)行偏角法放樣。 4.輸入每行數據看數據輸完畢沒(méi)有,輸完不要忘記按(EXE) 5.使用者需細心輸入,有問(wèn)題在以下網(wǎng)址查找原因。 http://www.celiang.net/celiang/article_view.asp?id=380&author=yshf 6.1E-6即是10的負6次方,亦即是等於0.000001 7.希望高人指點(diǎn)把此程序改為數據庫形式,并加入高程,希望哪位神仙路過(guò)指點(diǎn)一下,把程序改為坐標、高程一體的這程序就完美了,程序中不足之處請指點(diǎn)。 四、算例 某匝道的由五段線(xiàn)元(直線(xiàn)+完整緩和曲線(xiàn)+圓曲線(xiàn)+非完整緩和曲線(xiàn)+直線(xiàn))組 成,各段線(xiàn)元的要素(起點(diǎn)里程S0、起點(diǎn)坐標X0 Y0、起點(diǎn)切線(xiàn)方位角F0、線(xiàn)元長(cháng)度 LS、起點(diǎn)曲率半徑R0、止點(diǎn)曲率半徑RN、線(xiàn) 元左右偏標志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、正算 (注意:略去計算方式及線(xiàn)元要素輸入,請自行根據所求點(diǎn)所在的線(xiàn)元輸入線(xiàn)元 要素) 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 |
聯(lián)系客服