5800公路线路坐标正反算程序.docx
《5800公路线路坐标正反算程序.docx》由会员分享,可在线阅读,更多相关《5800公路线路坐标正反算程序.docx(8页珍藏版)》请在冰豆网上搜索。
5800公路线路坐标正反算程序
5800公路线路坐标正反算程序
时间:
2010-08-0118:
59:
01 来源:
本站 作者:
张玉楠 我要投稿 我要收藏 投稿指南
一单交点对称:
本程序由一个主程序JD和三个子程序(JDA、JDB、JDC)构成,运行时只需运行主程序即可!
本程序适用于单交点对称型、不对称型、有无缓和曲线单圆曲线型一个交点范围内(含交点前后有直线段时)的曲线要素核对和坐标计算,手工输入要素,对设计图纸的“直线、曲线转角表”中交点数据进行复核验证,并为线元法程序提供起点坐标起点切线方位角等数据!
当然本程序也可单独逐交点输入进行放样计算用!
鉴于5800计算器的空间和以上所述本程序的主要目的,故此程序不修改为数据库版本!
需要的自行修改结合XY框架自己修改为数据库反算程序等!
主程序名:
JD
24→Dimz↙
Cls:
"K(JD)"?
K:
"X(JD)"?
X:
"Y(JD)"?
Y:
"LS1"?
B:
"LS2"?
C:
?
R:
"(ZH)FWJ"?
M:
"α(Z-,Y+)"?
O:
M+O→N:
Prog"JDA"↙
Cls:
"T1=":
"T2=":
"L=":
"LY=":
Locate4,1,S:
Locate4,2,T:
Locate4,3,L:
Locate4,4,Q◢
Cls:
"E=":
"K(ZH)=":
Locate7,1,E:
Locate7,2,Z[1]◢
Cls:
"K(HY)=":
"K(QZ)=":
"K(YH)=":
"K(HZ)=":
Locate7,1,Z[2]:
Locate7,2,Z[3]:
Locate7,3,Z[4]:
Locate7,4,Z[5]◢◢
LbI0:
"JSLC"?
P:
"(-L,Z=0,+R)"?
D:
IfD≠0:
Then"RJ"?
H:
IfEnd:
Prog"JDB"↙
IfD<0:
ThenCls:
"X(L)=":
"Y(L)=":
Locate6,1,F:
Locate6,2,G◢◢
Goto0:
IfEnd↙
IfD=0:
ThenCls:
"X(Z)=":
"Y(Z)=":
Locate6,1,F:
Locate6,2,G◢
"QXFWJ(Z)=":
Z▼DMS◢
Goto0:
IfEnd↙
IfD>0:
ThenCls:
"X(R)=":
"Y(R)=":
Locate6,1,F:
Locate6,2,G◢
Goto0:
IfEnd↙
子程序1名:
JDA
IfO<0:
Then -1→W:
Else1→W:
IfEnd:
WO→A↙
B2÷24÷R-B^(4)÷2688÷R^(3)→Z[6]↙
C2÷24÷R-C^(4)÷2688÷R^(3)→Z[7]↙
B÷2-B^(3)÷240÷R2→Z[8]↙
C÷2-C^(3)÷240÷R2→Z[9]↙
Z[8]+((R+Z[7]-(R+Z[6])cos(A))÷sin(A))→S↙
Z[9]+((R+Z[6]-(R+Z[7])cos(A))÷sin(A))→T↙
RAπ÷180+(B+C)÷2→L↙
RAπ÷180-(B+C)÷2→Q↙
(R+(Z[6]+Z[7])÷2)÷cos(A÷2)-R→E↙
K-S→Z[1]↙↙
Z[1]+B→Z[2]↙↙
Z[2]+Q÷2→Z[3]↙
Z[1]+L-C→Z[4]↙
Z[4]+C→Z[5]↙
子程序2名:
JDB
X-Scos(M)→Z[19]:
Y-Ssin(M)→Z[20]↙
X+Tcos(N)→Z[21]:
Y+Tsin(N)→Z[22]↙
IfP>Z[1]:
ThenGoto1:
IfEnd↙
Z[1]-P→L↙
X-(S+L)cos(M)+Dcos(Z+H)→F↙
Y-(S+L)sin(M)+Dsin(Z+H)→G↙
M→Z:
Goto5↙
LbI1:
IfP>Z[2]:
ThenGoto2:
IfEnd↙
P-Z[1]→L:
L→Z[12]:
B→Z[13]:
Prog"JDC"↙
Z[19]+Z[14]cos(M)-WZ[15]sin(M)+Dcos(Z+H)→F↙
Z[20]+Z[14]sin(M)+WZ[15]cos(M)+Dsin(Z+H)→G↙
M+90WL2÷(BRπ)→Z↙
Goto5↙
LbI2:
IfP>Z[4]:
ThenGoto3:
IfEnd↙
P-Z[1]→L:
90(2L-B)÷R÷π→Z[11]↙
Rsin(Z[11])+Z[8]→Z[14]:
R(1-cos(Z[11]))+Z[6]→Z[15]↙
Z[19]+Z[14]cos(M)-WZ[15]sin(M)+Dcos(Z+H)→F↙
Z[20]+Z[14]sin(M)+WZ[15]cos(M)+Dsin(Z+H)→G↙
M+WZ[11]→Z↙
Goto5↙
LbI3:
IfP>Z[5]:
ThenGoto4:
IfEnd↙
Z[5]-P→L:
L→Z[12]:
C→Z[13]:
Prog"JDC"↙
Z[21]-Z[14]cos(N)-WZ[15]sin(N)+Dcos(Z+H)→F↙
Z[22]-Z[14]sin(N)+WZ[15]cos(N)+Dsin(Z+H)→G↙
N-90WL2÷(CRπ)→Z↙
Goto5↙
LbI4:
P-Z[5]→L↙
X+(T+L)cos(N)+Dcos(Z+H)→F↙
Y+(T+L)sin(N)+Dsin(Z+H)→G↙
N→Z↙
Goto5↙
LbI5:
360Frac((Z+360)÷360)→Z↙
子程序3名:
JDC
IfZ[12]=0:
Then0→Z[14]:
0→Z[15]:
Else↙
Z[12]-Z[12]^(5)÷40÷(RZ[13])2+Z[12]^(9)÷3456÷(RZ[13])^(4)→Z[14]↙
Z[12]^(3)÷6÷(RZ[13])-Z[12]^(7)÷336÷(RZ[13])^(3)+Z[12]^(11)÷42240÷(RZ[13])^(5)→Z[15]↙
IfEnd↙
程序说明:
已知数据输入:
XC?
测站X坐标
YC?
测站Y坐标
K(JD)?
交点桩号
X(JD)?
交点X坐标
Y(JD)?
交点Y坐标
LS1 ?
第一缓和曲线长度
LS2 ?
第二缓和曲线长度
R ?
圆曲线半径
(ZH)FWJ°?
交点前(即前交点至本交点也即ZH点)的正切线方位角
α(Z-,Y+)?
本交点处线路转角(左转为负,右转为正,度分秒输入)
K×+×××?
待求桩号
Z?
待求桩号距中距离(左负值,右正值,中为0)
RJ?
斜交右角(线路切线前进方向与边桩右侧夹角)
计算结果显示:
T1=第一切线长
T2=第二切线长
L=曲线总长
LY=圆曲线长
E=曲线外距
K(ZH)=直缓点桩号
K(HY)=缓圆点桩号
K(QZ)=曲中点桩号
K(YH)=圆缓点桩号
K(HZ)=缓直点桩号
X=Y=待求点的坐标(其中:
L-左Z-中R-右)
QXFWJ(Z)=待求点的中桩切线方位角(当求中桩坐标时显示)
二非对称线路坐标正反算通用程序(中边桩)
GAUSSLE坐标正反算fx-5800程序
源程序
1.正算主程序
Lbi0:
“G”?
K:
“Z=-1,Q=0,Y=1”?
A
IfA=-1:
ThenProg“ZX”:
Prog“GSZS”:
IfEnd
IfA=1:
ThenProg“YX”:
Prog“GSZS”:
IfEnd
IfA=0:
ThenProg“QX”:
Prog“GSZS”:
IfEnd
“X=”:
X◢
”Y=”:
Y◢
Goto0
说明:
K 正算时所求点的里程
A 选择线路,左幅=-1,右幅=1,整体式=0
正算子程序GSZS
((P-R)÷(2(H-O)PR))→D:
“JIAODU”?
M:
”JULI(-Z +Y)”?
L
(Abs(K-O))→J:
Prog"SUB1":
(F-M)→F
Return
2.反算主程序 GSFS
Lbi0:
?
X:
?
Y:
X→Z[2]:
Y→Z[3]:
“QDXO”?
I:
"QDY0"?
S:
"QDLC"?
O:
"QDFWJ"?
G:
"ZDLC"?
H:
"QDR"?
P:
"ZDR"?
R:
”Q(Z=-1ZX=0Y=1)”?
Q:
((P-R)÷(2(H-O)PR))→D:
(Abs((Y-S)cos(G-90)-(X-I)sin(G-90)))→J:
0→L:
90→M:
Lbl1:
Prog"SUB1":
((Z[3]-Y)cos(G-90+QJ(1÷P+JD)×180÷π)-(Z[2]-X)sin(G-90+QJ(1÷P+JD)×180÷π))→L:
If:
AbsL<10-6ThenGoto2:
ElseJ+L→J:
Goto1:
←┘
Lbl2:
0→L:
Prog"SUB1":
((Z[3]-Y)÷sinF)→L:
”K=”:
O+J→k◢”L=”:
L→L◢
Goto0
3.反算,正算子程序(SUB1)
0.1184634425→A:
0.2393143352→B:
0.2844444444→Z[4]:
0.0469100770→C:
0.2307653449→E:
0.5→Z[1]:
(I+J(Acos(G+QCJ(1÷P+CJD)×180÷π)+Bcos(G+QEJ(1÷P+EJD)×180÷π)+Z[4]cos(G+QZ[1]J(1÷P+Z[1]JD)×180÷π)+Bcos(G+Q(1-E)J(1÷P+(1-E)JD)×180÷π)+Acos(G+Q(1-C)J(1÷P+(1-C)JD)×180÷π)))→X:
(S+J(Asin(G+QCJ(1÷P+CJD)×180÷π)+Bsin(G+QEJ(1÷P+EJD)×180÷π)+Z[4]sin(G+QZ[1]J(1÷P+Z[1]JD)×180÷π)+Bsin(G+Q(1-E)J(1÷P+(1-E)JD)×180÷π)+Asin(G+Q(1-C)J(1÷P+(1-C)JD)×180÷π)))→Y:
(G+QJ(1÷P+JD)×180÷π+M)→F:
(X+LcosF)→X:
(Y+LsinF)→Y
4.曲线元要素数据库:
ZX/YX/QX
IfK<(起点里程):
ThenGoto2:
IfEnd
IfK<(ZDLC):
ThenQDXO→I:
QDY0→S:
QDLC→O:
QDFWJ→G:
ZDLC→H:
QDR→P:
ZDR→R:
Q(Z=-1ZX=0Y=1)→Q:
Goto3:
IfEnd
……….(注:
如有多个曲线元要素继续添加入数据库ZX/YX/QX中)
Lbl2:
”NO”
Lbl3:
Return
说明:
一、程序功能及原理
1.功能说明:
本程序由两个主程序——正算主程序(GSZS)、反算主程序(GSFS)和两个子程——正算子程序(SUB1)、线元数据库(DAT-M)构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、终点里程、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。
本程序可以在CASIOfx-4800P计算器及CASIOfx-4850P计算器上运行。
由于加入了数据库(DAT-M),可实现坐标正反算的全线贯通。
组合程序5可实现M线的正算贯通,组合程序7可实现M线的反算贯通,组合程序6可实现坐标计算到放样一体化。
2.计算原理:
利用待求点至线元起点切线作垂线,逐次迭代趋近原理反算里程及边距。
二、使用说明
1、规定
(1)以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2)当所求点位于中线时,L=0;当位于中线左侧时,L取负值;当位于中线右侧时,L取正值。
3)当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
(4)当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径。
(5)当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
(7)曲线元要素数据库(DAT-M)可根据线型不同分为各个线元段输入到DAT-M中,即分为直线段、缓和曲线、圆曲线等。
(8)正算时可仅输入里程和边距及右交角可实现全线计算,但反算时只能通过首先输入里程K值读取数据库DAT-M,计算器自动将里程K所在线元数据赋给反算主程序GSFS进行试算,试算出的里程和边距须带入正算主程序GSZS中计算坐标,若坐标吻合则反算正确。
2、输入与显示说明
(1)输入部分:
QDX0?
线元起点的X坐标
QDY0?
线元起点的Y坐标
QDK0?
线元起点里程
QDFWJ?
线元起点切线方位角
ZDLC?
线元终点里程
QDR?
线元起点曲率半径
ZDR?
线元止点曲率半径
Q?
线元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)
K?
正算时所求点的里程
L?
正算时所求点距中线的边距(左侧取负值,右侧取正值,在中线上取零)
ANG?
正算边桩时左右边桩连线与线路中线的右交角
X?
反算时所求点的X坐标
Y?
反算时所求点的Y坐标
M?
斜交右角
(2)显示部分
X正算时,计算得出的所求点的X坐标
Y正算时,计算得出的所求点的Y坐标
K反算时,计算得出的所求点的里程
L反算时,计算得出的所求点的边距
三、算例
某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组成,各段线元的要素(起点里程S0、起点坐标X0Y0、起点切线方位角F0、线元长度LS、起点曲率半径R0、止点曲率半径RN、线元左右偏标志Q)如下:
S0 X0 Y0 F0 LS R0 RN Q
500.000 19942.837 28343.561 1251631.00 269.256 1E45 1E45 0
769.256 19787.340 28563.378 1251631.00 37.492 1E45 221.75 -1
806.748 19766.566 28594.574 1202554.07 112.779 221.75 221.75 -1
919.527 19736.072 28701.893 911730.63 80.285 221.75 9579.228 -1
999.812 19744.038 28781.659 804050.00 100.000 1E45 1E45 0
(注:
该算例中线元要素Ls为程序修改前须输入的线元长度,程序修改后改为输入线元终点里程KN)