当前位置:文档之家› 交点法与线元法

交点法与线元法

交点法与线元法
交点法与线元法

本人一直以来想找一个交点法与线元法相结合的坐标正反算程序,在网上找了很久很久,没能找到一个较为满意的,有幸在测量空间看到大歪哥的《Casio5800交点法程序》与《线元法(积木法)匝道坐标正反算放样程序》,根据歪哥意见“需要的自行修改结合XY框架自己修改为数据库反算程序等”,本人不才,采用最笨的办法将两个程序综合了一下,使之能既能进行交点法正反算,又能进行线元法正反算。在此特别感谢大歪哥!将程序发上来,愿与大家一同交流学习欢迎大家吐口水,只要能进步就行!

程序由一个主程序ZBZFS和8个子程序(JS、XY-A、XY-B、JDYS、1、2、3、4)构成,运行时只需运行主程序即可!

本程序适用于单交点对称型、不对称型、无缓和曲线单圆曲线型一个交点范围内(含交点前后有直线段时)的曲线要素核对和坐标正反算,手工输入要素,对设计图纸的“直线、曲线转角表”中交点数据进行复核验证,并能对单一线元进行坐标正反算。

1主程序名:ZBZFS(功能:进入计算主程序)

65→Dimz↙

Deg:Fix 3↙

"1.JD ZFS 2. ZHADAO ZFS"? I: I→Z[61]: "1.ZHONG SHU JS 2. JS"? I↙

If I=1: Then Goto1: Else Goto2:IfEnd↙

LbI 1 :If Z[61]=1: Then Prog"JDYS":Else Cls:"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:"1.ZS 2.FS"? I: I=2=>Goto 3↙

LbI 1 : Cls: If Z[61]=1: Then"JD ZS KX+XXX"?K :Prog"4": Else "ZHADAO ZS KX+XXX"?K :IfEnd↙

LbI 2: Cls:90→B: Cls:"RJ Or 0 To 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(功能:显示正算或反算结果)

If O=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↙

If O=3:Then "X=":"Y=":"K×××=":"Z=": Locate 4,1,C: Locate 4, 2, D : Locate 6,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] :Locate 7,3, Z[24] :Locate 7,4, Z[31] ◢

Cls :"K(ZH)=": "X=": "Y=": "FWJ=":Locate 7,1,Z[1] : Locate 7,2, Z[19] :Locate 7,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、进入程序:1.JD ZFS 2. 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.ZS 2.FS选1正算选2反算

程序线元判断原则:

(1) 以道路中线的前进方向(即里程增大的方向)区分左右;

(2) 当所求点位于中线时,Z=0;当位于中线左侧时,Z取负值;当位于中线右侧时,Z 取正值。

(3) 当线元为直线时,其起点、终点的曲率半径为无穷大,以10的45次代替输入×10x45。

(4) 当线元为圆曲线时,无论其起点、终点与什么线元相接,其曲率半径均等于圆弧的半径。

(5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次代替输入×10x45;与圆曲线相接时,曲率半径等于圆曲线的半径。终点与直线相接时,曲率半径为无穷大,以10的45次代替输入×10x45;与圆曲线相接时,曲率半径等于圆曲线的半径。

(6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。终点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。

6、循环计算部份:

输入与显示简单说明

JD ZS KX+XXX? 或ZHADAO ZS KX+XXX?输入所求的桩号(交点法或线元法)

Z ?输入所求点距中线的边距(在中线输零,左负右正)

RJ?输入边桩时左右边桩连线与线路前进方向中桩切线的右交角(当输入数字0时进入下一个桩号计算输入)

X =、Y = 计算得出的所求点的左、中、右的X Y坐标

QF(Z)= ×××计算得出所求点的中桩切线方位角

F= ×××计算得出置镜点到测点的方位角

S= ×××计算得出置镜点到测点的水平距离

JD FS KN+? 交点法反算时需输入反算点所在(前直线,前缓和段、圆曲线、后缓和段、后直线)线元中的任一点桩号(定位线元用)

X=×××反算输入所求点的X坐标

Y=×××反算输入所求点的Y坐标

K=×××计算得出求点所对应的里程

Z=×××计算得出求点到所对应的里程的垂直距离(负就是左边,正就是右边)

相关主题
文本预览
相关文档 最新文档