Casio5800交點法與線元法

2022-12-21 20:48:03 字數 7709 閱讀 7101

casio5800交點法與線元法(積木法)匝道座標正反算放

樣程式顏色文字casio5800交點法與線元法(積木法)匝道座標正反算放樣程式(xufeng 2011.2.14)

本人一直以來想找乙個交點法與線元法相結合的座標正反算程式,在網上找了很久很久,沒能找到乙個較為滿意的,有幸在測量空間看到大歪哥的《casio5800交點法程式》與《線元法(積木法)匝道座標正反算放樣程式》,根據歪哥意見「需要的自行修改結合xy框架自己修改為資料庫反算程式等」,本人不才,採用最笨的辦法將兩個程式綜合了一下,使之能既能進行交點法正反算,又能進行線元法正反算。在此特別感謝大歪哥!

將程式發上來,願與大家一同交流學習歡迎大家吐口水,只要能進步就行!

程式由乙個主程式zbzfs和8個子程式(js、xy-a、xy-b、jdys、1、2、3、4)構成,執行時只需執行主程式即可!

本程式適用於單交點對稱型、不對稱型、無緩和曲線單圓曲線型乙個交點範圍內(含交點前後有直線段時)的曲線要素核對和座標正反算,手工輸入要素,對設計圖紙的「直線、曲線轉角表」中交點資料進行複核驗證,並能對單一線元進行座標正反算。

1主程式名:zbzfs(功能:進入計算主程式)65→dimz↙deg:fix 3↙

" zfs2. zhadao zfs"? i:

i→z[61]: " shu js 2. js"?

i↙if i=1: then goto1: else goto2:

ifend↙

lbi 1 :if z[61]=1: then prog"jdys":

elsecls:"k0"?a:

"kn"?l :"x0"?

u :"y0"?v:

"f0"?w :"r0"?

p :"rn"?q:

"zx:-1,+1,0"?g:

ifend↙lbi 2 :prog"js"

2子程式名:js(功能:選擇正算或反算模式)

cls:"xc"?h:"yc"?z↙

cls:" i: i=2=>goto 3↙

lbi 1 : cls: if z[61]=1:

then"jd zs kx+***"?k :prog"4":

else"zhadao zs kx+***"?k :ifend↙

lbi2: cls:90→b:

cls:"rj or 0to k"?b:

b=0 =>goto 1:"z"?t↙prog"xy-a"↙x+tcos(m+b)→x↙y+tsin(m+b)→y↙

360frac((m+360)÷360→m↙

pol(x-h,y-z : 360frac((j+360)÷360→j↙2→o: prog"xy-b":goto 2↙

lbi 3 : cls: if z[61]=1:

then"jd fs kn+"?k:"x"?

c:"y"?d:

prog"4":else cls:"zhadao fs":

"x"?c:"y"?

d:ifend↙lbi 4 :prog"xy-a"↙(d-y)sin(m)+(c-x)cos(m)→h↙

if abs(h)>x10-3 :then k+h→k:goto 4:ifend↙(d-y)÷cos(m)→t↙

3→o: prog"xy-b":goto 3↙

3子程式名:xy-a(功能:座標計算程式)

5→n: g(q-1-p-1)÷abs(l-a)→f: abs(k-a)÷n→r: 90r÷π→s:w+(fnr+2gp-1)ns→m:1→e↙

u+r÷6×(cos (w)+cos (m) +4∑(cos (w+((e+0.5)fr+2gp-1)×(e+0.5)s),e,0,(n-1))+2∑(cos(w+((efr+2gp-1)es,e,1,(n-1)))→x ↙

v+r÷6×(sin (w)+sin (m) +4∑(sin (w+((e+0.5)fr+2gp-1)×(e+0.5)s),e,0,(n-1))+2∑(sin(w+((efr+2gp-1)es,e,1,(n-1)))→y↙4子程式名:

xy-b(功能:顯示正算或反算結果)ifo=2:then↙

cls :"k×××=":"z=":

"x=":"y=": locate 6,1, k :

locate 4, 2, t : locate 4,3, x: locate 4,4, y◢

if t=0 :then cls :"qf(z)=": locate 8,1, m:m▼dms◢

ifend↙

cls :"k×××=":"s=": locate 6,1, k : locate 4, 2, i :"f=":j:j▼dms◢ifend↙

ifo=3:then"x=":"y=":

"k×××=":"z=": locate 4,1,c:

locate 4, 2, d : locate6,3,k :locate 4,4,t◢ifend:

cls↙

5子程式名:4(功能:將交點引數轉為線元計算引數)

lbi 1: if z[48]<0 :then -1→z[62] : else:1→z[62]:ifend

lbi 2: if k≥z[57]:then z[57]→a:

z[1]→l:z[23]→u:z[24]→v :

z[31]→w : 10^45→p:10^45→q :

0→g:ifend↙

lbi 3:if k≥z[1]:then z[1]→a :

z[2]→l : z[19]→u : z[20]→v:

z[29]→w : 10^45→p:z[46]→q :

z[62]→g: ifend↙

lbi 4:if k≥z[2]:then z[2]→a :

z[4]→l:z[25]→u : z[26]→v:

z[32]→w : z[46]→p: z[46]→q :

z[62]→g: ifend↙

lbi 5:f k≥z[4]:then z[4]→a :

z[5]→l : z[27]→u:z[28]→v :

z[33]→w : z[46]→p: 10^45→q :

z[62]→g: ifend↙

lbi 6:if k≥z[5]:then z[5]→a :

z[5]+1000→l:z[21]→u : z[22]→v :

z[30]→w:10^45→p :10^45→q :

0→g : ifend↙

6子程式名:jdys(功能:輸入交點要素、顯示交點要素及主點座標)

cls :"bp"?h:

h→z[57]:"k(jd)"?k:

k→z[41] :"x(jd)"?x :

x→z[42]:"y(jd)"?y:

y →z[43]:"ls1"?b:

b→z[44] :"ls2"?c:

c →z[45]: ?r:

r →z[46]:"(zh)fwj°"?m:

m→z[47] :"α(z-,y+)°"?o:

o→z[48] : z[47]+z[48]→z[49]: prog "1":

prog"2"↙cls :"t1=":"t2=":

"l=":"ly=": locate 4,1, z[50] :

locate 4,2, z[51]: locate 4,3, z[52] : locate 4,4, z[53]◢cls :

"e=": locate 7,1, z[54]

cls :"k(qd)=":"x=":

"y=":"fwj="locate 7,1,z[57] :locate 7,2, z[23] :

locate7,3, z[24] :locate 7,4, z[31] ◢

cls :"k(zh)=":"x=":

"y=":"fwj=":locate 7,1,z[1] :

locate 7,2, z[19] :locate7,3, z[20] :locate 7,4, z[29]◢

cls :"k(hy)=":"x=":

"y=":"fwj=": locate 7,1,z[2] :

locate 7,2, z[25] :locate 7,3, z[26] :locate 7,4, z[32]◢cls :

"k(qz)=": locate 7,1,z[3]◢

cls :"k(yh)=":"x=":

"y=":"fwj=": locate 7,1,z[4] :

locate 7,2, z[27] :locate 7,3, z[28] :locate 7,4, z[33]◢

cls :"k(hz)=":"x=":

"y=":"fwj=": locate 7,1,z[5] :

locate 7,2, z[21] :locate 7,3, z[22] :locate 7,4, z[30]◢7子程式名:

1(功能:計算交點要素)

if z[48]<0 :then-1→z[55] : else 1→z[55] :

ifend : z[55]* z[48]→z[56] ↙z[44] 2 ÷24÷z[46]-z[44]^(4)÷2688÷z[46] ^(3) →z[6] ↙z[45] 2 ÷24÷z[46]-z[45]^(4)÷2688÷z[46] ^(3) →z[7] ↙z[44]÷2-z[44]^(3)÷240÷z[46]2 →z[8] ↙z[45]÷2-z[45]^(3)÷240÷z[46]2 →z[9] ↙

z[8]+(( z[46]+z[7]-( z[46]+z[6])cos(z[56]))÷sin(z[56]))→z[50]↙z[9]+(( z[46]+z[6]-( z[46]+z[7])cos(z[56]))÷sin(z[56]))→z[51]↙z[46]* z[56]π÷180+( z[44]+ z[45]) ÷2→z[52]↙z[46]* z[56]π÷180-( z[44]+ z[45]) ÷2→z[53]↙(z[46]+(z[6]+z[7])÷2)÷cos(z[56]÷2)-z[46]→z[54]↙z[41]-z[50]→z[1] ↙↙z[1]+z[44]→z[2] ↙↙z[2]+z[53]÷2→z[3]↙z[1]+z[52]-z[45]→z[4]↙z[4]+z[45]→z[5]↙

8子程式名:2(功能:計算主點座標及切線方位角)z[42]-z[50]cos(z[47])→z[19]: (直緩座標)z[43]-z[50]sin(z[47])→z[20]↙

z[47]→z : 360frac((z+360)÷360→z[29] (方位角)z[42]+z[51]cos(z[49])→z[21]: (緩直座標)z[43]+z[51]sin(z[49])→z[22]↙

z[49]→z: 360frac((z+360)÷360→z[30] (方位角)

z[1]-z[57]→l↙(h→z[57]為前直線起點樁號)

z[42]-( z[50]+l)cos(z[47])→z[23]↙(前直線起點座標)z[43]-( z[50]+l)sin(z[47])→z[24]↙

z[47]→z : 360frac((z+360)÷360→z[31]↙(方位角)z[44]→z[12]:z[44]→z[13]:

prog"3"↙z[4]-z[1]→l:90(2l-z[44])÷z[46]÷π→z[11]↙

z[46]sin(z[11])+z[8]→z[14]:z[46](1-cos(z[11]))+z[6]→z[15]↙z[19]+z[14]cos(z[47])-z[55]z[15]sin(z[47])]→z[27]↙(圓緩點座標)z[20]+z[14]sin(z[47])+z[55]z[15]cos(z[47])]→z[28]↙z[47]+z[55]z[11]→z: 360frac((z+360)÷360→z[33]↙(方位角)z[2]-z[1]→l:

90(2l-z[44])÷z[46]÷π→z[58]↙

z[46]sin(z[58])+z[8]→z[14]:z[46](1-cos(z[58]))+z[6]→z[15]↙z[19]+z[14]cos(z[47])-z[55]z[15]sin(z[47])]→z[25]↙(緩圓點座標)z[20]+z[14]sin(z[47])+z[55]z[15]cos(z[47])]→z[26]↙z[47]+z[55]z[58]→z: 360frac((z+360)÷360→z[32]↙(方位角)9子程式名:

3(主點座標計算輔助程式)if z[12]=0 :then 0→z[14]: 0→z[15]:

else↙

z[12]-z[12]^(5)÷40÷(z[46]*z[13])2+ z[12]^(9)÷3456÷(z[46]*z[13])^(4) →z[14]↙z[12]^(3)÷6÷(z[46]*z[13])-z[12]^(7)÷336÷(z[46]*z[13])^(3)+ z[12]^(11) ÷42240÷(z[46]*z[13])^(5)→z[15] ↙ifend↙

程式說明:

1、進入程式: zfs2. zhadao zfs?選1為交點法正反算(以後操作均為交點法計算),選2為線元法正反算(以後操作均為線元法計算)

2、zhong shu js 2. js?選1重輸引數,選2直接進入交點法或線元法正反算(引數為已輸過的引數)

3、引數輸入:

一、交點法已知資料輸入:bp?上一交點zh樁號

k(jd)?交點樁號x(jd)?交點x座標y(jd)?交點y座標ls1?第一緩和曲線長度ls2?第二緩和曲線長度r?圓曲線半徑

(zh)fwj°?交點前(即前交點至本交點也即zh點)的正切線方位角α(z-,y+)?本交點處線路轉角(左轉為負,右轉為正,度分秒輸入)交點法計算要素顯示:

t1=第一切線長t2=第二切線長l=曲線總長ly=圓曲線長e=曲線外距k(zh)=直緩點樁號k(hy)=緩圓點樁號k(qz)=曲中點樁號k(yh)=圓緩點樁號k(hz)=緩直點樁號

二、線元法已知資料輸入:

k0?kn? r0?

rn?f0?x0?

y0?zx?分別為線元起點樁號、終點樁號、起點半徑、終點半徑、起點切線方位角、起點x座標、起點y座標、線元轉向。

4、xc ?yc?輸入置鏡點即測站的x,y座標5、 選1正算選2反算程式線元判斷原則:

(1)以道路中線的前進方向(即里程增大的方向)區分左右;

(2)當所求點位於中線時,z=0;當位於中線左側時,z取負值;當位於中線右側時,z取正值。(3)當線元為直線時,其起點、終點的曲率半徑為無窮大,以10的45次代替輸入×10x45。(4)當線元為圓曲線時,無論其起點、終點與什麼線元相接,其曲率半徑均等於圓弧的半徑。

(5)當線元為完整緩和曲線時,起點與直線相接時,曲率半徑為無窮大,以10的45次代替輸入×1

0x45;與圓曲線相接時,曲率半徑等於圓曲線的半徑。終點與直線相接時,曲率半徑為無窮大,以10的45次代替輸入×10x45;與圓曲線相接時,曲率半徑等於圓曲線的半徑。

(6)當線元為非完整緩和曲線時,起點與直線相接時,曲率半徑等於設計規定的值;與圓曲線相接時,曲率半徑等於圓曲線的半徑。終點與直線相接時,曲率半徑等於設計規定的值;與圓曲線相接時,曲率半徑等於圓曲線的半徑。6、迴圈計算部份:

輸入與顯示簡單說明

jd zs kx+***?或zhadao zs kx+***?輸入所求的樁號(交點法或線元法)z?

輸入所求點距中線的邊距(在中線輸零,左負右正)rj?輸入邊樁時左右邊樁連線與線路前進方向中樁切線的右交角(當輸入數字0時進入下乙個樁號計算輸入)

x =、y =計算得出的所求點的左、中、右的x y座標qf(z)= ×××計算得出所求點的中樁切線方位角f= ×××計算得出置鏡點到測點的方位角s= ×××計算得出置鏡點到測點的水平距離

jd fs kn+?交點法反算時需輸入反算點所在(前直線,前緩和段、圓曲線、後緩和段、後直線)線元中的任一點樁號(定位線元用)x=×××反算輸入所求點的x座標y=×××反算輸入所求點的y座標k=×××計算得出求點所對應的里程

z=×××計算得出求點到所對應的里程的垂直距離(負就是左邊,正就是右邊)

Casio 5800P程式 匝道及主線非對稱型 10

casio 5800p 計算程式 對程式進行部分更新,匝道計算比以前的公式精度高,程式公式簡潔,缺點是計算速度稍慢。2010 5 24 匝道座標計算程式 a03zdzb 主程式名 lbl 0 a 1,b 2,c 3,d 4,e 5,h 6,j 7 a k k if a 1 then prog a g...

5800應用程式

一 座標計算源程式 1.主程式 tyqxjs 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 w abs s o prog sub1 x xs x y ys...

5800座標正反算

主程式 xy kd n n xa u ya v dka o ca g ls h ra p rb r q q 1 p c p r 2 h p r d 180 e if n 1 then goto 1 else goto 2 ifend lbl 1 dki s d z abs s o w prog su...