線元法曲線任意里程中邊樁坐標正反算程序_第1頁
線元法曲線任意里程中邊樁坐標正反算程序_第2頁
線元法曲線任意里程中邊樁坐標正反算程序_第3頁
線元法曲線任意里程中邊樁坐標正反算程序_第4頁
線元法曲線任意里程中邊樁坐標正反算程序_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、線元法曲線任意里程中邊樁坐標正反算(CASIO fx-5800P計算器)程序(附帶高程)一、功能及原理說明功能說明:本程序由一個主程序(1-MAIN)和七個子程序一一正算子程序(1-SUB-ZS)、反算子程 序(1-SUB-FS)等構(gòu)成,可以根據(jù)曲線段一一直線、圓曲線、緩和曲線(完整或非完整型)的線元 要素(起點坐標、起點里程、起點切線方位角、線元長度、起點曲率半徑、止點曲率半徑)及里 程邊距或坐標,對該曲線段范圍內(nèi)任意里程中邊樁坐標進行正反算。本修改版程序既可實現(xiàn)正算 全線貫通,亦可實現(xiàn)反算全線貫通。本程序在CASIO FX-5800P計算器運行。計算原理:利用Gauss-Legendre

2、5點通用公式正算線路中邊樁坐標、線外測點至曲線元起點和 終點的垂距的符號是否相異(即DcaXDcb該測點在其線元內(nèi))進行判斷并利用該線元要素反 算中樁里程、支距,最后計算出反算結(jié)果。程序輸入計算器后,請根據(jù)統(tǒng)計串列ListX,Y,freqN在程序中實際可能被使用的維數(shù),將 其統(tǒng)計矩陣串列改為包含相應維數(shù)的任意數(shù)據(jù)的矩陣,即在list列表中隨機輸入相應維數(shù)的數(shù)據(jù), 保證矩陣大小符合維數(shù)要求。本程序正算速度在1-2秒左右,反算比正算慢點,可根據(jù)需要調(diào)整精度加快速度。本程序可建 立曲線要素數(shù)據(jù)庫及高程變坡點數(shù)據(jù)庫,一次輸入整條線路數(shù)據(jù),計算時自動調(diào)用數(shù)據(jù)庫,實現(xiàn) 全線貫通,也可臨時手動輸入線元計算要

3、素進行計算。本程序由小駱在前人的基礎(chǔ)上改進而成,經(jīng)個人測試可用。學識淺薄,不足之處,在所難免, 歡迎提出改進意見。二、源程序主 程序 (1-MAIN)Deg:fix 320DimZLbl 0:cls:INPUT(0),ZX(1),YX(2)” ?I (選擇手動輸入計算參數(shù)0,還是調(diào)用線路數(shù)據(jù)1,2)If I=0:Then Prog “1-DAT1” :IfEnd“SZ=XY(1),XY=SZ(2)” ?N (正算,反算)If N=1 :Then Goto 1Else If N=2 :Then Goto 2Else Goto 3IfEnd:IfEndLbl 1: “KP=”?S (輸入待求樁號)

4、If S0:Then Goto 0:IfEnd“JL(m)=” ?Z (輸入偏距)If Z 尹 0:Then “ANGLE-R(Deg)=”?M:IfEnd (輸入斜交右角)If I尹0:Then Prog “1-DAT2” :IfEndS-OW:If WH:Then cls:locate 6,2,KP OUTGoto 0:IfEnd:IfEnd(前半條針對“DAT”情況,后半條針對“INPUT”情況。)Prog “1-SUB-ZS” :Prog 1-SUB-GC”If Z0:Then cls: XR(m)=”:locate 4,1,X:“YR(m)=”:locate 4,2,Y,Else c

5、ls: X(m)=” :locate 5,1,X:“Y(m)=”:locate 5,2,Y“Hs(m)=” :locate 5,3,Z16:Fix 6:(臨時增加顯示位數(shù)以顯示角度)“FWJ=”:locate 5,4, Int(F)+0.01Int(60Frac(F)+0.006Frac(60Frac(F) / (將 10進制角度轉(zhuǎn)換為度分秒形式)Fix 3:IfEnd:IfEndGoto 1Lbl 2: “X(m)=”?X:If X0:Then Goto 0:IfEnd (輸入待反算點X坐標) “Y(m)二”?Y(輸入待反算點Y坐標) XZ4:YZ5:0M為運行“ SUB-ZX ”垂距計算

6、準備數(shù)據(jù)Ifend采用雙變量遞增,J變量超前計 算以保證 list x, Y,freqZ,Z+1 的取值能準確無誤,特別是對于 存在多條線路的情況。此處利用If I=0:Then 1 j:Ulist X1:Vlist Y1:H W: 0fZ:prog “1-SUB-ZS” :G+QEH(C+HD) F: Xlist X2:Ylist Y2:1 Z G-90A:F-90B:Prog 1-SUB-ZX” If Z6Z7=0:Then goto B:Ifend G+90A:F+90B:Prog 1-SUB-ZX” IF Z6Z7=0:Then Goto B Else cls: locate 6,2,

7、KP OUT”:Goto 0: IfEnd: 1J:Prog 1-DAT1” 0Z:Lbl A: Isz J:Prog 1-DAT1”:Isz Z List freqZ-9A:list freqZ+1-9B:Prog 1-SUB-ZX” If Z6Z7=0:Then ZJ:Prog 1-DAT1” :Goto B:IfEnd List freqZ+9A:list freqZ+1+9B:Prog “SUB-ZX”If Z6Z7=0:Then ZJ:Prog 1-DAT1” :Goto B:Else Goto A:IfEnd雙變量遞增找出待求點所在的 Lbl B:Prog 1-SUB-FS”線兀O

8、+WS:Prog “ 1-SUB-GC ”Cls: K(m)=” :locate 4,1,S: Hs(m)=” :locate 4,2,Z16:“JL(m)=” :locate 4,3,Z, Goto 2Lbl 3:cls: locate 4,2,1-MAIN-END正算子程序(1-SUB-ZS)0.1184634425 一 A: 0.2393143352 一 B:0.2844444444一 Z1:0.0469100770 一 K:0.2307653449L:0.5Z3U+W(Acos(G+QEKW(C+KWD)+Bcos(G+QELW(C+LWD)+Z1cos(G+QEZ3W(C+Z3WD)

9、+Bcos(G+QE(1-L)W(C+(1-L)WD)+Acos(G+QE(1-K)W(C+(1-K)WD) XV+W(Asin(G+QEKW(C+KWD)+Bsin(G+QELW(C+LWD)+Z1sin(G+QEZ3W(C+Z3WD)+Bsin (G+QE(1-L)W(C+(1-L)WD)+Asin(G+QE(1-K)W(C+(1-K)WD) YG+QEW(C+WD)+MFX+Zcos(F)一X:Y+Zsin(F) 一YF-MF:If F0:Then F+360一F:IfEndReturn反算子程序(1-SUB-FS)G-90fT:Abs(Z5-V)cos(T)-(Z4-U)sin(T)

10、W: 0f Z (給Z賦值0,因為在 1-sub-zs中Z被調(diào) 用,可能存在值)Lbl C:Prog “1-SUB-ZS”T+QEW(C+WD) 一Z8:(Z5-Y)cos(Z8)-(Z4-X)sin(Z8) 一Z2If Abs (Z2) Z12:Then 1Z14:Else -1Z14:IfEndIf SZ17:Then Z10+Z15Z16 Z16:Else Z10+Z15Z16+Z14(Z17-Z16) :2:Z11 一 Z16:IfEndReturn垂距計算子程序(1-SUB-ZX)(Z5-list YZ)cos(A)-(Z4-list XZ)sin(A) 一Z6(Z5-list YZ

11、+1)cos(B)-(Z4-list XZ+1)sin(B) Z7Return曲線元要素數(shù)據(jù)庫:1-DAT1(兩條線路,可擴充為多條線路)If I=0:Then Goto E: Else If I=2:Then Goto F:IfEnd:IfEndj=1二*list X1(起點 x 坐標 U):* list Y1(起點 Y 坐標 V):*Mat A1,1(起點里程 O):*一list freq1(起點方位角G) :*一Mat A1,2(起終點里程差H):*一MatA1,4(起 點半徑P):*Mat A1,5(終點半徑R):* 一Mat A1,5(偏轉(zhuǎn)系數(shù)Q,左負右正,直線取0):Goto H:

12、IfEndJ=2二*list X2(起點x坐標U):*一list Y2(起點Y坐標V):*一list freq2(起點方 位角G):起點里程O,起終點里程差H,起點半徑P,終點半徑R,偏轉(zhuǎn)系數(shù)Q Mat A: Goto H: IfEnd J=3二*list X3(起點x坐標U):*一list Y3(起點Y坐標V):*一list freq3(起點方 位角G):起點里程O,起終點里程差H,起點半徑P,終點半徑R,偏轉(zhuǎn)系數(shù)Q MatA: GotoH: IfEndLbl F: J=1=*f list X1(起點x坐標U):*一list Y1(起點Y坐標V):*一list freq1(起點方位角G):起

13、點里程O,起終點里程差H,起點半徑P,終點半徑R,偏轉(zhuǎn)系數(shù)Q Mat A: GotoH: IfEndJ=2二*list X2(起點x坐標U):*一list Y2(起點Y坐標V):*一list freq2(起點方 位角G):起點里程O,起終點里程差H,起點半徑P,終點半徑R,偏轉(zhuǎn)系數(shù)Q MatA: GotoH: IfEnd(注:如有多個曲線元要素繼續(xù)添加入數(shù)據(jù)庫DAT1中)Lbl E: list Xj一U:list Yj一V:list freqj一G:Mat A1,1一O:Mat A1,2一H:Mat A1,3 一 P:Mat A1,4 一 R:Mat A1,5 一 Q:Goto GLbl E:

14、 “X0=”?U: “Y0=”?V: “S0=”?O: “F0=”?G: “LS=”?H: “R0=”?P: “RN=”?R: “Q二”?QLbl G:1 + PC:(P-R) : (2HPR) 一D:180; nE:Return7 .曲線元要素判斷數(shù)據(jù)庫:1-DAT2(兩條線路,可擴充為多條線路)If I=2:Then Goto 2:IfEndIf S第一線元終點里程:Then 1一J:Prog “1-DAT1” :ReturnElse If、第二線元終點里程:Then 2一J:Prog “1-DAT1” :ReturnElse If S第三線元終點里程:Then 3一J:Prog “1-D

15、AT1” :ReturnElse If S第四線元終點里程:Then 4一J:Prog “1-DAT1” :ReturnIfEnd:IfEnd:IfEnd:IfEndIf、2第四線元起點里程And S第五線元終點里程:Then 5J: Prog “1-DAT1”: ReturnElse If S第n線元里程:Then nJ: Prog “1-DAT1”: Return IfEnd:IfEnd:IfEnd:IfEndLbl 2If,第一線元終點里程:Then 1J:Prog 1-DAT1” :ReturnElse If S第二線元終點里程:Then 2J:Prog 1-DAT1 :ReturnE

16、lse If S第三線元終點里程:Then 3J:Prog 1-DAT1” :ReturnElse If S第四線元終點里程:Then 4J:Prog 1-DAT1 :Return IfEnd:IfEnd:IfEnd:IfEndIf S2第四線元起點里程And S第五線元終點里程:Then 5J: Prog “1-DAT1: ReturnElse If S第n線元里程:Then nJ: Prog 1-DAT1”: Return IfEnd:IfEnd:IfEnd:IfEnd8.高程數(shù)據(jù)庫子程序:1-DAT3 (兩條線路,可擴充為多條線路)(直線段統(tǒng)一并入各曲線段的左 側(cè))If I=0:Then

17、 Goto A:Else If I=2:Then Goto 2:IfEnd: IfEndIf S第一變坡點的終點里程:Then變坡點里程Mat B1,1:變坡點高程Mat B1,2:豎曲線 半徑Mat B1,3:變坡點左邊縱坡Mat B1,4:變坡點右邊縱坡Mat B1,5:Ifend (縱坡上坡為正,下坡為負。半徑都取正值,坡度不用加百分號,例如-2.8%的坡度輸入-2.8)If S第二變坡點的終點里程:Then 變坡點里程,變坡點高程,豎曲線半徑,變坡點左邊縱坡, 變坡點右邊縱坡Mat B: goto B:IfendLbl 2If, XYXY = SZ1、 N ?選擇計算方式,輸入1表示進

18、行由里程、邊距計算坐標;輸入2表示由坐標反算 里程和邊距。2、X0 ?線元起點的X坐標(U)3、Y0 ?線元起點的Y坐標(V)4、S0 ?線元起點里程(O)5、F0 ?線元起點切線方位角(G)6、LS ?線元長度(H)7、R0 ?線元起點曲率半徑(P)8、RN ?線元止點曲率半徑(R)9、Q ? 線 元左右偏標志(左偏Q=-1,右偏Q=1,直線段Q=0)10、S ?正算時所求點的里程11、Z ?正算時所求點距中線的邊距(左側(cè)取負,值右側(cè)取正值,在中線上取零)12、ANG?正算邊樁時左右邊樁連線與線路中線的右交角13、J?曲線元數(shù)據(jù)庫曲線段判斷系數(shù)(J=1、2.n)14、X ?反算時所求點的X坐

19、標15、Y ?反算時所求點的Y坐標16、M?斜交右角17、T、Z8、Z2?反算時起點及迭代點切線的垂線的方位角,Z2是迭代計算時的迭代變量。18、Z4反算時反算點的X坐標19、Z5反算時反算點的Y坐標20、W?正反算時所求點的里程與該段落起點里程的差值。21、A、B、Z1是Gauss-Legendre求積公式中的插值系數(shù)22、C、D、E是正算時為簡化計算用于代替Gauss-Legendre公式中的小計算式的變量23、K、L、Z3是Gauss-Legendre求積公式中的求積節(jié)點24、J=1 時:listX1、listY1、MatA1,1、listfreq1、MatA1,2、MatA1,3、Ma

20、t A1,4、Mat A1,5分別是各曲線元的X、Y坐標、起始里程S0、初始方位角F0、線元長度Ls、起 點半徑R0、終點半徑Rn、曲線偏向系數(shù)QJ=n時:listXJ、list YJ、Mat A1,1、list freqJ、Mat A1,2、Mat A1,3、Mat A1,4、 Mat A1,5分別是各曲線元的X、Y坐標、起始里程S0、初始方位角F0、線元長度Ls、起點半徑R0、 終點半徑Rn、曲線偏向系數(shù)Q25、Z6、Z7?線外點到線元起點與終點的垂距,也即線外點到起終點切線的垂線的距離。26、Z9Z17?高程計算時的臨時變量(二)、顯示部分:XS= XXX正算時,計算得出的所求點的X坐標

21、YS=XXX正算時,計算得出的所求點的Y坐標S=XXX反算時,計算得出的所求點的里程Z=XXX反算時,計算得出的所求點的邊距四、算例某匝道的由五段線元(直線+完整緩和曲線+圓曲線+非完整緩和曲線+直線)組成,各段線元S0X0Y0F0LSR0RNQ500.00019942.83728343.561125 16 31.00269.2561E451E450769.25619787.34028563.378125 16 31.0037.4921E45221.75-1806.74819766.56628594.574120 25 54.07112.779221.75221.75-1919.5271973

22、6.07228701.89391 17 30.6380.285221.759579.228-1999.81219744.03828781.65980 40 50.00100.0001E451E450的要素(起點里程S0、起點坐標X0 Y0、起點切線方位角F0、線元長度LS、起點曲率半徑R0、止點 曲率半徑RN、線元左右偏標志Q)如下:S=700Z=-5計算得XS=19831.41785YS=28509.72590S=700Z=0計算得XS=19827.33592YS=28506.83837S=700Z= 5計算得XS=19823.25398YS=28503.95084S=780Z=-5計算得X

23、S=19785.25749YS=28575.02270S=780Z=0計算得XS=19781.15561YS=28572.16358S=780Z= 5計算得XS=19777.05373YS=28569.30446S=870Z=-5計算得XS=19747.53609YS=28654.13091S=870Z=0計算得XS=19742.68648YS=28652.91379S=870Z= 5計算得XS=19737.83688YS=28651.696681、正算(注意:略去計算方式及線元要素輸入,請自行根據(jù)所求點所在的線元輸入線元要素)S=940 Z=-5.123S=940 Z=0S=940 Z= 3.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論