CASIO直線曲線萬能坐標程序
程序特點:真正的全線貫通坐標計算,在曲線元要素輸入時僅需要輸入第一段全部曲線元要素,后面曲線元要素除起點半徑、終點半徑、曲線長、轉(zhuǎn)向需輸入外其他要素均從前一曲線按辛普森8等分計算得出;辛普森公式任意等分,滿足所有精度要求;全線曲線元數(shù)據(jù)一次性程序化輸入,擴充變量數(shù)據(jù)庫,無需修改程序內(nèi)容;傻瓜操作,適用初級用戶。
一、程序:MCW“1.JS   2.SZ”:W=1=>Z[2]=0:Goto 1 ΔW=2=> O“KOU  LING”:O≠123456=>O=0: “OUT” ◢Goto 4ΔO=0: Z[1]=0:Goto 0←┘Lbi 0←┘”N0.”:Z[1]+1 ◢←┘Z[1]=0=>{ABCREFGU}:A“X0”:B“Y0”:C“F0”:R“R0”:E“RN”:F“D0”:G“LS”:U“G” : Z[Z[1]×8+3]=A:Z[Z[1]×8+4]=B:Z[Z[1]×8+5]=C:Z[Z[1]×8+6]= R-1:Z[Z[1]×8+7]= E-1:Z[Z[1]×8+8]=F: Z[Z[1]×8+9]=F+G: Z[Z[1]×8+10]=U: “NEXT”◢ Isz Z[1]: Goto 0ΔZ[1]=1=>D=Z[9]:Z=0:Z[2]=0:GOTO 2ΔD=Z[(Z[1]-1)×8+9]:Z=0:Z[2]=Z[1]-1:GOTO 2←┘Lbi A: Z[Z[1]×8+3]=X:Z[Z[1]×8+4]=Y:Z[Z[1]×8+5]=J: Z[Z[1]×8+8]=D: {REGU}:R“Ro”:E“RN”: G“LS”:U“G”: Z[Z[1]×8+6]=R-1 :Z[Z[1]×8+7]=E-1: Z[Z[1]×8+9]=D+G: Z[Z[1]×8+10]=U: “NEXT”◢ Isz Z[1]: Goto 0←┘Lbi 1←┘{DZ}:D:Z:Z[2]=0:Goto 2←┘Lbi 2←┘Z[2]>Z[1]=>GoTo 4ΔD≤Z[Z[2]×8+9]=>A=Z[Z[2]×8+3]:B=Z[Z[2]×8+4]: C =Z[Z[2]×8+5]:R=Z[Z[2]×8+6]: E=Z[Z[2]×8+7]: F=Z[Z[2]×8+8]: G=Z[Z[2]×8+9]: U=Z[Z[2]×8+10]: Goto3ΔIsz Z[2]:Goto 2Lbi 3←┘W=2 =>N=8:≠>N=5ΔP=U(E-R)÷Abs(G-F):Q=Abs(D-F)÷N:S=90Q÷π: J=C+(NPQ+2UR)NS:L=1←┘X=A+Q÷6×(Cos C+Cos J +4∑(Cos (C+((L+0.5)PQ+2UR)×(L+.5)S),L,0,(N-1))+2∑(Cos (C+(LPQ+2UR)LS),L,1,(N-1)))+ZCos(J+90)←┘     Y=B+Q÷6×(Sin C+Sin J +4∑(Sin (C+((L+0.5)PQ+2UR)×(L+.5)S),L,0,(N-1))+2∑(Sin (C+(LPQ+2UR)LS),L,1,(N-1)))+ZSin(J+90):W=2=>GOTO AΔ
Z=0=>“X”:X:Pause 0: “Y” :Y◢ Goto 1ΔZ<0=>“XL”:X:Pause 0: “YL”:Y◢ Goto 1Δ           fx4850 ①Z>0=>“XR”:X:Pause 0: “YR”:Y ◢ Goto 1 ←┘
Z=0=> X “X” ◢Y “Y”◢ Goto 1ΔZ<0=> X “XL” ◢Y “YL”◢ Goto 1Δ               fx4800 ②Z>0=> X “XR” ◢Y “YR”◢ Goto 1 ←┘Lbi 4←┘
二、說明   a、編制說明  本程序是運用復化辛普生公式根據(jù)曲線段——直線、圓曲線、緩和曲線(完整或非完整型)的線元要素(起點坐標、起點里程、起點切線方位角、線元長度、起點曲率半徑、止點曲率半徑)及里程邊距,對該曲線段范圍內(nèi)任意里程中邊樁坐標進行計算,以及對卡西歐擴充變量的靈活應用,實現(xiàn)了真正意義上的的全線貫通及曲線要素輸入程序化(在不修改程序內(nèi)容的情況下可通過運行程序輸入任意多段曲線元要素)。通過對N=? 進行修改,可對辛普森公式進行任意等分進行運算。(注:N為不小于2的整數(shù),N越大精度越高,計算速度越慢;N越小精度越低,運算速度越快,一般曲線取N=4就能滿足精度要求,在能滿足精度的情況下盡量N取小值,已獲得最佳運算速度,不要盲目的追求精度)!、程序操作說明  程序分為兩部分:1.JS為計算,2.SZ為設置! 1、首先用Shift+Defm鍵對計算器內(nèi)存變量進行擴充,擴充變量數(shù)為8×X+2(X為曲線元段數(shù),變量數(shù)視內(nèi)存情況盡量大些),運行程序,選2進行曲線要素設置,為防止誤操作在正確輸入口令123456時方可進行設置,否則顯示OUT跳到程序尾(LBI4)。在執(zhí)行程序中將第一段曲線元要素按規(guī)律輸入到擴充內(nèi)存變量中(A“X0”:B“Y0”:C“F0”:R“R0”:E“RN”:F“D0”:G“LS”:U“G”),以后曲線僅需輸入R“R0”、E“RN” :G“LS”:U“G”,其他參數(shù)自動計算得出。在顯示NEXT時為提示是否輸入下一曲線,按EXE繼續(xù)輸入,如不需再輸入則退出程序。  2、選1.JS進行坐標運算,D輸入樁號,Z輸入左右距離(負為左,正為右,0為中)程序首先自動判斷其在哪一線元內(nèi),并把其線元要素調(diào)出進行計算,即可對全線進行坐標計算!、變量說明  X0:Y0:F0――――曲線元起點X、Y坐標及起點正切線方位角  R0:RN――――――曲線元起點及終點半徑  D0:LS:Q ――――曲線元起點樁號、路線長度及線路左右偏標志(左=-1,直線=0,右=1)  D ――――――――曲線元中待求點樁號  Z ――――――――計算邊樁距中線平距,左邊輸入負值,右邊輸入正值,中樁輸入0
X:Y  (中)  XL:YL (左)  XR:YR (右)―――待求點的X,Y坐標  擴充變量:Z[Z[1]×8+3]: Z[Z[1]×8+4]: Z[Z[1]×8+4]: Z[Z[1]×8+6]: Z[Z[1]×8+7]: Z[Z[1]×8+8]: Z[Z[1]×8+9]: Z[Z[1]×8+10]: 分別為各線元X0:Y0:F0;R0:RN:D0:LS:G,        (1) 以道路中線的前進方向(即里程增大的方向)區(qū)分左右;當線元往左偏時,Q=-1;當線元往右偏時,Q=1;當線元為直線時,Q=0。        (2) 當所求點位于中線時,Z=0,坐標顯示X  Y;當位于中線左側時,Z取負值,坐標顯示XL  YL,;當位于中線右側時,Z取正值,坐標顯示XR  YR。        (3) 當線元為直線時,其起點、止點的曲率半徑為無窮大,以10的45次方代替。        (4) 當線元為圓曲線時,無論其起點、止點與什么線元相接,其曲率半徑均等于圓弧的半徑。        (5) 當線元為完整緩和曲線時,起點與直線相接時,曲率半徑為無窮大,以10的45次方代替;與圓曲線相接時,曲率半徑等于圓曲線的半徑。止點與直線相接時,曲率半徑為無窮大,以10的45次方代替;與圓曲線相接時,曲率半徑等于圓曲線的半徑。        (6) 當線元為非完整緩和曲線時,起點與直線相接時,曲率半徑等于設計規(guī)定的值;與圓曲線相接時,曲率半徑等于圓曲線的半徑。止點與直線相接時,曲率半徑等于設計規(guī)定的值;與圓曲線相接時,曲率半徑等于圓曲線的半徑。[/color]        (7)當兩段緩和曲線相連時,相連處要素均輸為10的45次方(可以看作緩直+直緩)! B]本程序可在4800  4850上運行,只需將輸出部分進行修改。(4850①    4800②)[/B]
鄭石高速路面NO.9標余官營互通E匝道序號 Xo Yo Fo Ro RN D0 LS G1 744383.112 510406.456 43。34"00.0" 7000 7000 0 170 -1 中點樁號 中點X 中點Y 終點樁號 終點X 終點Y     85 744445.055 510464.662 170 744507.700  510522.112    2 744507.700  510522.112  42。10"30.8" 7000 500 170 116.071 1
中點樁號 中點X 中點Y 終點樁號 終點X 終點Y     228.036 744550.193 510561.637 286.071 744590.136 510603.713    3 744590.136 510603.713 49。18"02.3" 500 500 286.071 299.282 1 中點樁號 中點X 中點Y 終點樁號 終點X 終點Y     435.712 744669.415 510729.969 585.353 744707.945 510873.987    4 744707.945 510873.987 83。35"44.8" 500 無窮大 585.353 60 1 中點樁號 中點X 中點Y 終點樁號 終點X 終點Y     615.353 744710.545 510903.872 645.353 744712.247 510933.823    
CASIO4800、4850坐標正反計算程序[MC2008.01.29]
2008年1月27日更新,加入了坐標反算功能,坐標正算加入斜角計算功能。程序特點:真正的全線貫通坐標正反計算!在曲線元要素輸入時僅需要輸入第一段全部曲線元要素,后面曲線元要素除起點半徑、終點半徑、曲線長、轉(zhuǎn)向需輸入外其他要素均從前一曲線按辛普森8等分計算得出,解決了主線坐標計算無法獲得第二段及其以后曲線元起點參數(shù)的問題;辛普森公式任意等分,滿足所有精度要求;全線曲線元數(shù)據(jù)一次性程序化輸入,參數(shù)存儲采用擴充變量數(shù)據(jù)庫,無需修改程序內(nèi)容;多功能采用單程序編程,苊餛搗鋇饔米映絳潁岣咴慫閌潿齲簧倒喜僮鰨乇鶚視貿(mào)躚д摺?一、程序:MCW“1.ZS   2.FS   3.SZ”:W=1=>Z[2]=0:V=0:Goto 1 ΔW=2=> Goto 4ΔW=3=> O“KOU  LING”:O≠123456=>O=0: “OUT” ◢Goto DΔO=0: V=0:Z[1]=0:Goto 0←┘Lbi 0←┘”N0.”:Z[1]+1 ◢←┘Z[1]=0=>{ABCREFGU}:A“X0”:B“Y0”:C“F0”:R“R0”:E“RN”:F“D0”:G“LS”:U“G” : Z[Z[1]×8+3]=A:Z[Z[1]×8+4]=B:Z[Z[1]×8+5]=C:Z[Z[1]×8+6]= R-1:Z[Z[1]×8+7]= E-1:Z[Z[1]×8+8]=F: Z[Z[1]×8+9]=F+G: Z[Z[1]×8+10]=U: “NEXT”◢ Isz Z[1]: Goto 0ΔZ[1]=1=>D=Z[9]:Z=0:Z[2]=0:GOTO 2ΔD=Z[(Z[1]-1)×8+9]:Z=0:Z[2]=Z[1]-1:GOTO 2←┘Lbi A←┘Z[Z[1]×8+3]=X:Z[Z[1]×8+4]=Y:Z[Z[1]×8+5]=J: Z[Z[1]×8+8]=D: {REGU}:R“Ro”:E“RN”: G“LS”:U“G”: Z[Z[1]×8+6]=R-1 :Z[Z[1]×8+7]=E-1: Z[Z[1]×8+9]=D+G: Z[Z[1]×8+10]=U: “NEXT”◢ Isz Z[1]: Goto 0←┘Lbi 1←┘{DZO}:D:Z:O“RJ”:Z[2]=0:Goto 2←┘
Lbi 2←┘V≠1=>Z[2]>Z[1] =>GoToDΔΔD≤Z[Z[2]×8+9]=> A=Z[Z[2]×8+3]:B=Z[Z[2]×8+4]: C =Z[Z[2]×8+5]:R=Z[Z[2]×8+6]: E=Z[Z[2]×8+7]: F=Z[Z[2]×8+8]: G=Z[Z[2]×8+9]: U=Z[Z[2]×8+10]: Goto3ΔIsz Z[2]:Goto 2Lbi 3←┘W=3 =>N=8:≠>N=4ΔP=U(E-R)÷Abs(G-F):Q=Abs(D-F)÷N:S=90Q÷π: J=C+(NPQ+2UR)NS:L=1←┘X=A+Q÷6×(Cos C+Cos J +4∑(Cos (C+((L+0.5)PQ+2UR)×(L+.5)S),L,0,(N-1))+2∑(Cos (C+(LPQ+2UR)LS),L,1,(N-1)))+ZCos(J+ O)←┘     Y=B+Q÷6×(Sin C+Sin J +4∑(Sin (C+((L+0.5)PQ+2UR)×(L+.5)S),L,0,(N-1))+2∑(Sin (C+(LPQ+2UR)LS),L,1,(N-1)))+ZSin(J+ O):V=1=>Goto6ΔV=2=>Goto9ΔV=3=> GOTO CΔW=3=>GOTO AΔ
Z=0=>“X”:X:Pause 0: “Y” :Y◢ Goto 1ΔZ<0=>“XL”:X:Pause 0: “YL”:Y◢ Goto 1Δ           fx4850 ①Z>0=>“XR”:X:Pause 0: “YR”:Y ◢ Goto 1 ←┘
Z=0=> X “X” ◢Y “Y”◢ Goto 1ΔZ<0=> X “XL” ◢Y “YL”◢ Goto 1Δ               fx4800 ②Z>0=> X “XR” ◢Y “YR”◢ Goto 1 ←┘Lbi  4←┘ {MH} :M“X” :H“Y” :Z[2]=0:GOTO 5←┘Lbi  5←┘V=1:D= Z[Z[2]×8+9]:Z=0 :O=90:GOTO 2←┘Lbi  6←┘ K=((H -B)Cos(C-90)-(M-A)Sin(C-90))×((H -Y)Cos(J-90) -(M-X)Sin(J-90)):K≤0=> Goto 7ΔIsz Z[2]:Goto5←┘Lbi  7←┘ D=F+Abs((H -B)Cos(C-90)-(M-A)Sin(C-90)):D>G=> Isz Z[2]: Goto5ΔGoto 8←┘Lbi  8←┘V=2 :GOTO 3←┘Lbi  9 ←┘K=(H -Y)Cos(J-90)-(M-X)Sin(J-90):AbsK<E-3=>Goto BΔD=D+K :GOTO 8←┘Lbi  B←┘ V=3 :Z=0 :Goto 3←┘Lbi  C←┘Z=(H-Y) ÷Sin(J+90):“D”:D:Pause 0: “Z” Z◢(Z=(H-Y) ÷Sin(J+90):D“D” ◢“Z” Z◢)4800輸出GOTO 4←┘Lbi  D←┘
二、說明   a、編制說明   本程序是運用復化辛普生公式根據(jù)曲線段——直線、圓曲線、緩和曲線(完整或非完整型)的線元要素(起點坐標、起點里程、起點切線方位角、線元長度、起點曲率半徑、止點曲率半徑)及里程邊距,對該曲線段范圍內(nèi)任意里程中邊樁坐標進行計算,以及對卡西歐擴充變量的靈活應用,實現(xiàn)了真正意義上的的全線貫通及曲線要素輸入程序化(在不修改程序內(nèi)容的情況下可通過運行程序輸入任意多段曲線元要素)。通過對N=? 進行修改,可對辛普森公式進行任意等分進行運算。(注:N為不小于2的整數(shù),N越大精度越高,計算速度越慢;N越小精度越低,運算速度越快,一般曲線取N=4就能滿足精度要求,在能滿足精度的情況下盡量N取小值,已獲得最佳運算速度,不要盲目的追求精度)
b、程序操作說明程序分為兩部分:1.JS為計算,2.SZ為設置。1、 首先用Shift+Defm鍵對計算器內(nèi)存變量進行擴充,擴充變量數(shù)為8×X+2(X為曲線元段數(shù),變量數(shù)視內(nèi)存情況盡量大些),運行程序,選2進行曲線要素設置,為防止誤操作在正確輸入口令123456時方可進行設置,否則顯示OUT跳到程序尾(LBI4)。在執(zhí)行程序中將第一段曲線元要素按規(guī)律輸入到擴充內(nèi)存變量中(A“X0”:B“Y0”:C“F0”:R“R0”:E“RN”:F“D0”:G“LS”:U“G”),以后曲線僅需輸入R“R0”、E“RN” :G“LS”:U“G”,其他參數(shù)自動計算得出。在顯示NEXT時為提示是否輸入下一曲線,按EXE繼續(xù)輸入,如不需再輸入則退出程序。2、 選1.JS進行坐標運算,D輸入樁號,Z輸入左右距離(負為左,正為右,0為中)程序首先自動判斷其在哪一線元內(nèi),并把其線元要素調(diào)出進行計算,即可對全線進行坐標計算。
c、變量說明X0:Y0:F0――――曲線元起點X、Y坐標及起點正切線方位角R0:RN――――――曲線元起點及終點半徑D0:LS:Q―――曲線元起點樁號、路線長度及線路左右偏標志(左=-1,直線=0,右=1)D――――――――曲線元中待求點樁號Z―――――――――計算邊樁距中線平距,左邊輸入負值,右邊輸入正值,中樁輸入0RJ :坐標正算右夾角X:Y  (中)XL:YL (左)XR:YR (右)―――――――待求點的X,Y坐標擴充變量:Z[Z[1]×8+3]: Z[Z[1]×8+4]: Z[Z[1]×8+4]: Z[Z[1]×8+6]: Z[Z[1]×8+7]: Z[Z[1]×8+8]: Z[Z[1]×8+9]: Z[Z[1]×8+10]: 分別為各線元X0:Y0:F0;R0:RN:D0:LS:G,        (1) 以道路中線的前進方向(即里程增大的方向)區(qū)分左右;當線元往左偏時,Q=-1;當線元往右偏時,Q=1;當線元為直線時,Q=0。        (2) 當所求點位于中線時,Z=0,坐標顯示X  Y;當位于中線左側時,Z取負值,坐標顯示XL  YL,;當位于中線右側時,Z取正值,坐標顯示XR  YR。        (3) 當線元為直線時,其起點、止點的曲率半徑為無窮大,以10的45次方代替。(對于特別長的直線應適當提高10的次方數(shù),以防止以大半徑曲線誤算,建議以10的90次方計算)        (4) 當線元為圓曲線時,無論其起點、止點與什么線元相接,其曲率半徑均等于圓弧的半徑。
(5) 當線元為完整緩和曲線時,起點與直線相接時,曲率半徑為無窮大,以10的45次方代替;與圓曲線相接時,曲率半徑等于圓曲線的半徑。止點與直線相接時,曲率半徑為無窮大,以10的45次方代替;與圓曲線相接時,曲率半徑等于圓曲線的半徑。         (6) 當線元為非完整緩和曲線時,起點與直線相接時,曲率半徑等于設計規(guī)定的值;與圓曲線相接時,   本程序可在4800  4850上運行,只需將輸出部分進行修改。(4850①    4800②)
鄭石高速路面NO.9標余官營互通E匝道序號 Xo Yo Fo Ro RN D0 LS G1 744383.112 510406.456 43。34"00.0" 7000 7000 0 170 -1 中點樁號 中點X 中點Y 終點樁號 終點X 終點Y     85 744445.055 510464.662 170 744507.700  510522.112    2 744507.700  510522.112  42。10"30.8" 7000 500 170 116.071 1 中點樁號 中點X 中點Y 終點樁號 終點X 終點Y     228.036 744550.193 510561.637 286.071 744590.136 510603.713    3 744590.136 510603.713 49。18"02.3" 500 500 286.071 299.282 1 中點樁號 中點X 中點Y 終點樁號 終點X 終點Y     435.712 744669.415 510729.969 585.353 744707.945 510873.987    4 744707.945 510873.987 83。35"44.8" 500 無窮大 585.353 60 1 中點樁號 中點X 中點Y 終點樁號 終點X 終點Y     615.353 744710.545 510903.872 645.353 744712.247 510933.823    
計算時間測試(秒),計算精度滿足1mm時測試每段曲線元的終點4等分正算: 2.3   2.4   2.5   2.6反算: 9.6  12.4  16.5  17.05等分正算: 2.5   2.7   2.8   2.9反算:11.8  13.8  18.7  19.1
CASIO4800、4850標高程序[MC2008.01.29]
程序特點:全線標高數(shù)據(jù)一次性程序化輸入,擴充變量數(shù)據(jù)庫,無需修改程序內(nèi)容;全線貫通計算,標高計算時將全線數(shù)據(jù)分為4等分,首先判斷待求點在哪個區(qū)間,再循環(huán)選擇,提高運算時間;傻瓜操作,適用初級用戶。
一、程序:MCW“1.BG  2.SZ ”:W=1=> Goto 1ΔO“KOU  LING”:O≠123456=>O=0:Goto 5ΔO=0:Z[1]=0: Goto 0←┘Lbi  0←┘”No.”:Z[1]+1◢{ZHPR}:Z“D0” :H“BG” :P“PD” :R“R0” :Z[Z[1]×4+3]=Z:Z[Z[1]×4+4]=H:Z[Z[1]×4+5]=P:Z[Z[1]×4+6]=R:“NEXT”◢Isz Z[1]: Goto 0←┘Lbi  1 ←┘   Z[2]= Z[1]←┘{D}:D≤Z[Int(Z [2]÷4+1)×4+3]=>Z[2]= Int(Z [2]÷4) :Goto 2ΔD≤Z [Int (Z[2] ÷2+1)×4+3]=>Z[2]=Int(Z[2]÷2):Goto 2ΔD≤Z[Int (Z[2]×.75+1)×4+3]=>Z[2]=Int (Z[2]×.75):Goto 2ΔGoto 2←┘Lbi  2 ←┘  D<Z[Z[2]×4+3]=>Dsz Z[2]:Goto 2ΔGoto 3 ←┘Lbi  3←┘ Z[Z[2]×4+6]≠0=>G=Z[Z[2]×4+4]+(D-Z[Z[2]×4+3])×Z[Z[2]×4+5]÷100+(D-Z[Z[2]×4+3]) ^2÷2÷Z[Z[2]×4+6]:Goto 4ΔG=Z[Z[2]×4+4]+(D-Z[Z[2]×4+3])×Z[Z[2]×4+5]÷100:Goto 4←┘ Lbi  4 ←┘   {Z}:Z:G=G-0.02Abs(Z):“G”: G◢   (4850輸出){Z}:Z:G=G-0.02Abs(Z): G“G”◢   (4800輸出)Goto 1 ←┘Lbi  5 ←┘“OUT” ◢     程序操作說明程序分為兩部分:1.BG為標高計算,2.SZ為參數(shù)設置。1、 首先用Shift+Defm鍵對計算器內(nèi)存變量進行擴充,擴充變量數(shù)為4×X+2(X為標高參數(shù)段數(shù),變量數(shù)視內(nèi)存情況盡量大些),運行程序,選2進行標高參數(shù)設置,為防止誤操作在正確輸入口令123456時方可進行設置,一組參數(shù)輸入完畢后顯示“NEXT”,如輸入完畢請退出,按“EXE”繼續(xù)。2、 選1.BG進行標高運算,D輸入樁號,Z輸入距離,程序首先自動判斷其待求點在哪一段參數(shù)內(nèi),并將參數(shù)調(diào)出進行計算,即可對全線進行標高計算。c、變量說明Z“D0”―――――――起點樁號(非變坡點)H“BG”―――――――起點標高(非變坡點)P“PD”―――――――前坡度(%)R“R0”―――――――豎曲線半徑(凸曲線為負值;凹曲線為正值,直坡為0)