5800计算器全线坐标计算放样程序修改第三版.docx
《5800计算器全线坐标计算放样程序修改第三版.docx》由会员分享,可在线阅读,更多相关《5800计算器全线坐标计算放样程序修改第三版.docx(16页珍藏版)》请在冰豆网上搜索。
5800计算器全线坐标计算放样程序修改第三版
5800计算器全线坐标计算放样程序(修改第三版)
5800计算器全线坐标计算放样程序(修改版)
“XLZBJSCX”◢
LB1 0↙
CLS:
FIX4:
30→DIMZ↙
“XHS="?
G(后视点X):
"YHS="?
L(后视点Y):
"XZJ="?
M(置镜点X):
"YZJ="?
N(置镜点Y)
0l(G-M,L-N):
"DH=":
I(后视距)◢J<0=>J+360→J:
"FH=":
J→DMS◢(后视方位角)
LB1 1↙
“K=”?
K◢(计算里程)
IF K<本段曲线终点里程 AND K≥上段曲线终点里程:
THEN 本段终点里程→Z[1]:
上段曲线终点里程→Z[2]:
1→0(注:
左偏曲线输入-1→0,右偏曲线输入1→0):
偏角→A:
半径→R:
第一缓和曲线→Z[6]:
第二缓和曲线→Z[7]:
交点X→B:
交点Y→C:
小里程向交点方位角→E:
交点向大里程方位角→F:
G0T0 2:
IFEND↙
…………(曲线段分段输入)
补充直线段输入如下
IFK<本段直线终点里程AND K≥本段直线起点里程:
THEN1→0:
本段直线终点里程→Z[2]:
终点X→Z[16]:
终点Y→Z[11]:
方位角→E:
G0T04:
IFEND
LB1 2↙(曲线要素计算)
Z[6]/2-Z[6]^3/(240*R^2)+Z[6]^5/(34560*R^4)→Z[8]↙ (M1)
Z[7]/2-Z[6]^3/(240*R^2)+Z[7]^5/(34560*R^4)→Z[9]↙ (M2)
Z[6]^2/(24*R)-Z[6]^4/(2688*R^3)→Z[10]↙ (P1)
Z[7]^2/(24*R)-Z[7]^4/(2688*R^3)→Z[11]↙ (P2)
π*A*R/180+0.5*(Z[3]+Z[2])→W↙ (曲线总长)
90*Z[6]/(R*π)→Z[14]↙ (第一缓和曲线总偏角)
90*Z[7]/(R*π)→Z[15]↙(第二缓和曲线总偏角,可以省略)
Z[8]+(R+Z[10])TAN(A/2)-(Z[11]-Z[11])/SINA→Z[11]↙ (切线T1)
Z[9]+(R+Z[12])TAN(A/2)+(Z[10]-Z[12])/SINA→Z[12]↙ (切线T2)
B+Z[12]*C0S(E+180)→Z[13]↙ (ZH点X)
C+Z[12]*SIN(E+180)→Z[15]↙ (ZH点Y)
Z[1]-S→Z[3]↙ (ZH点里程)
Z[3]+Z[6]→Z[4]↙ (HY点里程)
Z[1]-Z[7]→Z[5]↙ (YH点里程)
G0T03↙
LB1 3↙(判断里程点与曲线关系)
IF K≤Z[3] AND K>Z[2]:
THEN G0T0 4:
IFEND↙
IF K≤Z[4] AND K>Z[3]:
THEN G0T0 5:
IFEND↙
IF K≤Z[5] AND K>Z[4]:
THEN G0T0 6:
IFEND↙
IF K≤Z[1] AND K>Z[5]:
THEN G0T0 7:
IFEND↙
LB1 4↙(里程小于直缓点直线独立坐标)
K-Z[3]→X:
0→Y:
E→T:
PR0G“TYZBCX”:
G0T0 1↙
LB1 5↙(第一缓和曲线独立坐标)
K-Z[3]→H↙
H-H^5/(40*R^2*Z[6]^2)+H^9/(3456*R^4*Z[6]^4)→X↙
H^3/(6*R*Z[6])-H^7/(3362*R^3*Z[6]^3)→Y↙
90*H^2/(R*π*Z[6])→T↙
IF 0>0 :
THEN T+E→T:
ELSE E-T→T:
T<0=>360+T→T:
IFEND↙
PR0G“TYZBCX”:
G0T0 1↙
LB16↙(圆曲线独立坐标)
K-Z[4]→H↙
H*180/(R*π)+Z[14]→T↙
R*SINT+Z[8]→X↙
R*(1-C0ST)+Z[13]→Y↙
IF 0>0 :
THEN T+E→T:
ELSE E-T→T:
T<0=>360+T→T:
IFEND↙
PR0G“TYZBCX”:
G0T0 1↙
LB17↙(第二缓和曲线独立坐标)
Z[1]-K →H↙
H-H^5/(40*R^2*Z[7]^2)+H^8/(3456*R^4*Z[4]^4)→U↙
H^3/(6*R*Z[7])-H^7/(336*R^3*Z[7]^3)→V↙
90*H^2/(R*π*Z[7])→T↙
Z[13]C0SA+Z[12]-U*C0SA-V*SINA→X↙
Z[13]*SINA-U*SINA+V*C0SA→Y↙
IF 0>0 :
THEN F-T→T:
T<0=>360+T→T:
ELSE F+T→T:
IFEND↙
PR0G“TYZBCX”:
G0T0 1↙
子程序:
“TYZBCX”↙ (统一坐标计算)
IF 0<0 :
THEN -Y→Y:
IFEND↙
“QXJ=”:
T◢ (计算里程点切线方位角,可以不显示)
Z[16]+X*C0SE-Y*SINE→Z[15]↙
Z[17]+X*SINE+Y*C0SE→Z[12]↙
“XI=”:
Z[13]◢ (中线X)
“YI=”:
Z[19]◢ (中线Y)
P0l(Z[18]-M,Z[13]-N):
"DI=":
I(中桩放样距)◢J<0=>J+360→J:
"FI=":
J→DMS◢(中桩放样方位角)
“PJ=”?
P◢ (输入边桩与线路夹角,左-右+)
“PD=”?
D◢ (输入边桩距)
Z[12]+D*C0S(T+P)→Z[20]↙
Z[13]+D*SIN(T+P)→Z[21]↙
“XP=”:
Z[20]◢ (边桩X)
“YP=”:
Z[21]◢ (边桩Y)
P0l(Z[20]-M,Z[21]-N):
"DP=":
I◢(边桩放样距)J<0=>J+360→J:
"FP=":
J→DMS◢(边桩放样方位角)
一、程序功能
主要功能:
采用交点法方式计算多条线路坐标正反算,可算任意复杂线型及立交匝道,包括C型,S型、卵型、回头曲线等;极坐标放样,全线路基边坡开挖口及坡脚放样计算、路基任意点设计高程、横坡、设计半幅宽度.隧道欠超挖放样计算。
新版本优化:
1、优化程序语句、2、取消原线元法计算,化线元法为交点法。
3、高程计算修改,4、附计算坐标及高程参数设计要素输入实例
二、源程序(绿色为程序名;蓝色为输入计算器内容)红色为网友调试后修改笔误。
0.总主程序(1、坐标计算放样程序2、坐标反算程序;3、高程计算查阅程序;4、路基半幅标准宽度查阅程序;5、路基边坡及开挖口放样程序;6、路基标准距离放样;7、桥梁锥坡计算放样程序;8、极坐标计算程序;9、隧道超欠挖计算程序)运行后按1~9数子约半秒,则选择1至9的程序,返回时,在桩号输入-1,返回选择计算类型。
输入-2,返回选择线路。
程序名:
0(数子0)
1.主程序:
一般坐标计算及放样程序
程序名:
1XY
Pr0g"DX":
Pr0g"QX":
90→A:
"PJ1"?
A:
A→B:
"PJ2"?
B:
A→Z[1]:
B→Z[9]:
D0:
"KM"?
Z:
Z=-1=>St0p:
Z=-2=>Break:
Pr0g"K":
?
D:
0→L:
"L0"?
L:
L→Z[10]:
P0rg"A":
Z[2]+Z[1]→A:
A-Z[9]→E:
I+Dc0s(A)+Z[10]c0s(E→X:
J+Dsin(A)+Z[10]sin(E→Y:
Pr0g"XY":
Pr0g"JS":
LpWhileZ≠-1
2.主程序:
由大概桩号及坐标反算桩号及距离
程序名:
2ZD
Pr0g"QX":
D0:
"KM"?
Z:
Z=-1=>St0p:
Z=-2=>Break:
Pr0g"K":
"X0"?
X:
"Y0"?
Y:
P0rg"B":
Pr0g"ZD":
LpWhileZ≠-1
3.主程序:
任意点高程计算及横坡
程序名:
3GC
Pr0g"QX":
0→B:
"H-B"?
B:
B→Z[9]:
D0:
"KM"?
Z:
Z=-1=>St0p:
Z=-2=>Break:
?
D:
Pr0g"H":
Fix3:
" H=":
Lc0ate6,4,H-Z[9]:
" I=":
L0cate6,4,I:
LpWhileZ≠-1
4.主程序:
任意桩号位置的标准路基宽度计算
程序名:
4GD
Pr0g"QX":
D0:
"KM"?
Z:
Z=-1=>St0p:
Z=-2=>Break:
-1→D:
Pr0g"C":
L→P:
1→D:
Pr0g"C":
Fix3:
" LGD=":
Lc0ate6,4,P:
" RGD=":
L0cate6,4,L:
LpWhileZ≠-1
5、主程序:
路基开挖边线及填方坡脚线放样程序
程序名:
4BP
Pr0g"DX":
Pr0g"QX":
0.5→B:
"TH-GD"?
B:
B→Z[2]:
D0:
"KM"?
Z:
Z=-1=>St0p:
Z=-2=>Break:
Pr0g"K":
“X0"?
X:
"Y0"?
Y:
Z[3]→M:
"M0"?
M:
M→Z[8]:
P0rg"B":
D→P:
Pr0g"C":
IfD<0:
Then0.75-L→D:
ElseL-0.75→D:
IfEnd:
Pr0g“H”:
H-0.03-Z[8]→G:
Pr0g“W1”:
IfG>0:
ThenG0t0T:
IfEnd:
-G→H:
IfH>E+F:
ThenL+M+N+U+C(H-E-F)+BF+AR→S:
G0t00:
IfEnd:
IfH>E:
ThenL+M+N+B(H-E)+AT→S:
G0t00:
IfEnd:
IfHThenL+M+HA→S:
G0t00:
IfEnd:
LbIT:
IfG>WThenL+Z[7]+V+J(G-W)+IW→S:
ElseL+Z[7]+GI→S:
IfEnd:
LbI0:
Fix0:
P→D:
Abs(D)-W→T:
" LX=":
L0cate6,4,T:
Pr0g"ZD":
" TW=":
Lc0ate6,4,G◢LpWhileZ≠-1
6、主程序:
定值放样路基桩计算填挖值
程序名:
6FM
Pr0g"DX":
Pr0g"QX":
D0:
"KM"?
Z:
Z=-1=>St0p:
Z=-2=>Break:
Pr0g"K":
?
D:
P0rg"A":
Z[2]+90→A:
I+Dc0s(A→X:
J+Dsin(A→Y:
Pr0g"XY":
Pr0g"JS":
Z[8]→M:
”M0”?
M:
M→Z[8]:
Pr0g“H”:
” TW=”:
L0cate6,4,H-Z[8]:
LpWhileZ≠-1
7、主程序:
桥梁锥坡计算放样
程序名:
7ZP
Pr0g"DX":
Pr0g"QX":
"Z0"?
Z:
"LD:
Z-,Y+"?
D:
Abs(D)→R:
"LR"?
R:
D→Z[7]:
R→Z[10]:
Z→Z[9]:
Pr0g”C”:
L→Z[10]:
Pr0g”K”:
D0:
Z[10]→Y:
"L0:
SZ+,DZ-"?
Y:
Y=-1=>St0p:
Y=-2=>Break:
√(Z[7]2(1-Y2/Z[10]2))→X:
Z[9]+Y→Z:
Pr0g”C”:
IfD>0:
ThenL+X→D:
Else–L-X→D:
IfEnd:
Pr0g”A”:
Z[2]+90→A:
I+Dc0s(A→X:
J+Dsin(A→Y:
Pr0g"XY":
Pr0g"JS":
LpWhileY≠-1
8、主程序:
由坐标计算方位角及距离
程序名:
8JS
Pr0g"DX":
D0:
?
X:
X=-1=>St0p:
X=-2=>Break:
?
Y:
Pr0g”JS”:
LpWhileX≠-1
9、主程序:
隧道超欠挖放样计算
程序名:
9SD
Pr0g"DX":
0.65→U:
”CQHD”?
A:
Y→Z[7]:
D0:
"KM"?
Z:
Z=-1=>St0p:
Z=-2=>Break:
Pr0g"K":
“X0"?
X:
"Y0"?
Y:
Z[8]→M:
"M0"?
M:
M→Z[8]:
P0rg"B":
D→Z[9]:
0→D:
Pr0g”H”:
Pr0g”SD1”:
Z[9]→D:
Z[8]→M:
Z[7]→X:
Rc0s(P→C:
H+A→A:
H+B→B:
C+A→E:
IfMThenR-V→S:
S=0=>G0t01:
√(S2-(B-A)2)S÷Abs(S→T:
Abs(D-Q)-T→T:
√(T2+(M-B)2)-V-X→L:
G0t00:
IfEnd:
LbI1:
√((D-Q)2+(M-A)2)-R-X→L:
LbI0:
Fix2:
” LX=”:
L0cate6,4,L:
Pr0g”ZD”:
“ H0=”:
L0cate6,4,M-H◢LpWhileZ≠-1
10.交点法正算子程序(A)
程序名:
A
P÷Abs(P→W:
0-T+ΠR×Abs(P)÷180+H÷2-N÷2→Q:
H→C:
0→M:
IfZ≤0-T:
ThenZ-0→S:
G→Z[2]:
G0t01:
IfEnd:
IfZ≤0-T+H:
ThenZ-0+T→S:
Pr0g“HX”:
G+WK→Z[2]:
A-T→A:
G→E:
G0t02:
IfEnd:
IfZ≤Q:
Then180(Z-0+T-0.5H)÷R÷Π→S:
Pr0g”AB”:
A+R(1-C0s(S→E:
B+Rsin(S→A:
E→B:
R→M:
G+WS→Z[2]:
A-T→A:
G→E:
G0t02:
IfEnd:
IfZ≤Q+N:
ThenQ+N-Z→S:
N→H:
Pr0g“HX”:
G+P→E:
E-WK→Z[2]:
F-A→A:
C→H:
G0t02:
IfEnd:
Z-Q-N+F→S:
G+F→Z[2]:
LbI1:
U+Sc0s(Z[2]→I:
V+Ssin(Z[2]→J:
Return:
LbI2:
U+Ac0s(E)-WBsin(E→I:
V+Asin(E)+WBc0s(E→J
11.交点法反算子程序(B)
程序名:
B
0→D:
D0:
Z+D→D:
Pr0g”A”:
P0l(X-I,Y-J+×10-9:
J-Z[2]→J:
Isin(J→S:
Ic0s(J→D:
IfM≠0:
ThenP0l(M-WS,D:
JMΠ÷180→D:
IfEnd:
LpWhileAbs(D>.001:
Z+D→Z:
S→D
12.缓和曲线段直角坐标计算子程序(AB)
程序名:
AB
H2÷R÷24-H∧(4)÷2688÷R∧(3)+H∧(6)÷506880÷R∧(5)-H∧(8)÷0÷R∧(7)→A:
H÷2-H∧(3)÷240÷R2+H∧(5)÷34560÷R∧(4)-H∧(7)÷8386560÷R∧(6)+H∧(9)÷20÷R∧(8)→B
13.计算缓和曲线段坐标增量及偏角子程序(HX)
程序名:
HX
S-S∧(5)÷40÷R2÷H2+S∧(9)÷3456÷R∧(4)÷H∧(4)-S∧(13)÷599040÷R∧(6)÷H∧(6)+S∧(17)÷0÷R∧(8)÷H∧(8)→A:
S∧(3)÷6÷R÷H-S∧(7)÷336÷R∧(3)÷H∧(3)+S∧(11)÷42240÷R∧(5)÷H∧(5)-S∧(15)÷9676800÷R∧(7)÷H∧(7)+S∧(19)÷00÷R∧(9)÷H∧(9)→B:
90S2÷Π÷R÷H→K:
IfS=0:
Then0→M:
ElseRH÷S→M:
IfEnd
14.高程计算子程序(H)
程序名:
H
Pr0g“S1”:
N-I→A:
A÷Abs(A→W:
R×Abs(A÷2→T:
IfZThenG+I(Z-C→H:
G0t00:
IfEnd:
IfZThenG-TI+(I+(Z-C+T)W÷2÷R)×(Z-C+T→H:
G0t00:
IfEnd:
N→I:
G+I(Z-C→H:
ILbI0:
IfD=0:
ThenH→H:
Return:
ElsePr0g“I”:
H+I(Abs(D)-K→H:
IfEnd
15.高程超高计算横坡子程序(I)
程序名:
I
Pr0g“I1”:
IfS=0:
ThenM→I:
Return:
ElseIfW=1:
Then((N-M)×(Z-C)÷S+M→I:
Return:
Else(((3((Z-C)÷S)2-2((Z-C)÷S)∧(3))×(N-M))+M→I:
IfEnd:
16.路基宽度子程序
程序名:
C
1→S:
Pr0g“G1”:
Z-C→E:
(B-A)E÷S+A→L
17:
极坐放样计算程序(计算放样点至置仪点方位角及距离)
程序名:
JS
Z[5]→K:
Z[6]→L:
P0l(X-K,Y-L:
IFJ<0:
ThenJ+360→J:
IFEnd:
Int(J)+0.01Int(60Frac(J))+0.006Frac(60Frac(J→J:
Fix4:
”FWJ=”:
L0cate6,4,J:
Fix3:
” S=”:
L0cate6,4,I◢
18.导线点子程序(DX)
程序名:
DX
Z[5]→K:
Z[6]→L:
“XZ”?
K:
”YZ”?
L:
K→Z[5]:
L→Z[6]
19.线路选择子程序(线路选择输0时。
则输曲线参数(QX)
程序名:
QX
1→A:
”QX:
X1=1,X2=2”?
A:
A→Z[4]:
IfA=0:
Then”JDKM”?
0:
”JDX”?
U:
”JDY”?
V:
”FWJ”?
G:
”ZJ”?
P:
”LS1”?
H:
”LS2”?
N:
”T1”?
T:
”T2”?
F:
?
R:
IFEnd
20.线路中线元段判别子程序(K)
程序名:
K
IfZ[3]=0:
ThenReturn:
IfEnd:
IfZ[3]=1:
Then Pr0g“X1”:
Return:
IfEnd:
IfZ[3]=2:
ThenPr0g“X2”:
Return:
IfEnd
21.坐标参数矩阵调用程序(F)
程序名:
F
MatF[1,1]→0:
MatF[1,2]→U:
MatF[1,3]→V:
MatF[1,4]→G:
MatF[1,5]→P:
MatF[1,6]→H:
MatF[1,7]→N:
MatF[1,8]→T:
MatF[1,9]→F:
MatF[1,10]→R
22.显示子程序
程序名:
XY
Fix3:
" X=":
L0cate6,4,X:
" Y=":
L0cate6,4,Y:
程序名:
ZD
Fix3:
"KM=":
L0cate6,4,Z:
" D=":
L0cate6,4,D
23.数据子程序(附后示例)
匝道线元转交点数据程序(T)
程序名:
T
N0rm2:
“QKM”?
Z:
“XQ”?
U:
“YQ”?
V:
“LS1”?
M:
“LS2”?
0:
“A1”?
A:
“A2”?
B:
“FWJ“?
G:
”ZJ“?
P:
?
R:
P÷Abs(P→Q:
A2÷R→H:
HM→H:
H-M→S:
B2÷R→N:
N-0→C:
0>N=>0→N:
H=0=>×10-9→H:
H→X:
90S2÷(RHΠ→K:
G-QK→G:
N=0=>×10-9→N:
90C2÷(RNΠ→D:
P+QK+QD→P:
Pr0g”AB”:
(H2-H2)÷24÷R÷sin(Abs(P))-(H∧(4)-N∧(4))÷2688÷R∧(3)÷sin(Abs(P))+(H∧(6)-N∧(6))÷506880÷R∧(5)÷sin(Abs(P))-(H∧(8)-N∧(8))÷0÷R∧(7)÷sin(Abs(P→E:
(R+A)tan(Abs(P)÷2)+B-E→T:
N→H:
Pr0g”AB”:
(R+A)tan(Abs(P)÷2)+B+E→F:
X→H:
Z-S+T→0:
Pr0g”HX”:
U-(A-T)c0s(G)+QBsin(G→U:
V-(A-T)sin(G)-QBc0s(G→V:
Fix3:
”JDKM=”:
L0cate6,4,0:
”JDX=”:
L0cate6,4,U:
”JDY=”:
L0cate6,4,V:
”FWJ=”:
G►DMS◢”ZJ=”P►DMS◢”LS1=”:
L0cate6,4,H:
”LS2=”:
L0cate6,4,N:
”T1=”:
L0cate6,4,T:
”T2=”:
L0cate6,4,F◢”R=”:
R◢
说明:
运行后“QKM”?
输入起点桩号;“XQ”?
“YQ”?
输入起点X、Y坐标;“LS1”?
“LS2”?
输入前段缓和曲线长度,后段缓和曲线长度;“A1”?
“A2”?
输入前段缓和曲线参数,后段缓和曲线参数;“FWJ“?
输入起点切线方位角;”ZJ“?
输入转角(终点方位角减起点方位角之差,左转为负,右转为正);计算结果要素同QX子程序中要素字母。
①-1程序名:
X1(线路1坐标计算要素程序)
If Z≤241.086:
Then[[-336.478,2600441.639,514392.519,280。
20’28.78”,203。
08’28.32”,106.667,81.667,-270.668,-283.056,60]]→MatF:
Pr0g”F”:
IfEnd
①-2程序名:
X2(线路2坐标计算要素程序)
If Z≤273.006:
Then[[171.674,2600784.547,514635.863,58。
49’17.2”,68。
09’26.91”,93.889,125,674.184,771,180]]→MatF:
Pr0g”F”:
Return:
IfEndIf Z≤466.227:
Then[[341.96,2600664.76,514799.865,123。
43’25.9”,15。
58’49.5”,0,138.211,68.954,125.273,445]]→MatF:
Pr0g”F”:
Return:
IfEnd
说明:
1、交点法:
IfZ≤计算交点段终点桩号:
Then[[交点桩号,交点X坐标,交点Y坐标,起点至交点方位角,交点转角,交点前段缓和曲线长度,交点后段缓和曲线长度,交点前段切线长度,交点后段切线长度,圆半径]]→MatF:
Pr0g”F”:
Return:
IfEnd(转角则为交点段终点方位角减起点方位角,分正负,左偏为负,右偏为正)如整条线无曲线,全为直线段,则交点为终点桩号,XY为终点坐标,方位角为起点方位角,转角和圆半径为1,其它全为0。
②-1程序名:
S1(线路1高程竖曲线要素子程序)
IfZ[3]=1:
ThenG0t01:
ElsePr0g“S2”:
Return:
IfEnd:
LbI1:
IfZ≤241.09:
Then 95.356→C:
40.742→G:
2000→R:
-.03155→I:
.00812→N:
IfEnd:
②-2程序名:
S2(线路2高程竖曲线要素子程序)
IfZ≤133.601:
Then106→C:
45.12→G:
1525→R:
-.0064→I:
.0298→N:
Return:
IfEnd:
IfZ≤466.23:
Then298→C:
50.841→G:
1945→R:
.0298→I:
-.01968→N:
Return:
IfEnd:
程序字母说明:
C-竖曲线交点桩号;G-交点桩号高程(未竖曲线调整的);R-竖曲线半径;I-竖曲线前纵坡;N-