自用5800全线贯通万能坐标计算程序.docx
《自用5800全线贯通万能坐标计算程序.docx》由会员分享,可在线阅读,更多相关《自用5800全线贯通万能坐标计算程序.docx(6页珍藏版)》请在冰豆网上搜索。
自用5800全线贯通万能坐标计算程序
5800计算器公路全线贯通万能坐标
正、反算计算程序(已输入5800结果不对)
FX5800全线贯通万能正、反算程序(一体化、超好用、短小、易懂)
FX5800计算器的积分程序(正反算、全线贯通、新线路)终极版
ZHUCHENGXU主程序
"1.ZS,2.FS"?
→Q←┘(输入1正算,输入2反算)
“NEW=0,OLD≠0”?
Z←┘
IfZ=0:
Then“X0=”?
A:
“Y0=”?
B:
“C0=”?
C:
“1/R0=”?
D:
“1/RI=”?
E:
“SP=”?
F:
“EP=”?
G:
Ifend:
Q=2=>Goto2←┘
Lbl1:
“KM=,<0Stop”?
H:
H<0=>Stop:
“PJ=”?
O:
“PY=”?
L←┘
LblZ:
Z=1=>Prog“01”:
Z=2=>Prog“02”←┘(选择数据库文件,可增加。
本语句用于选择线路,每条线路可对应一个数据库文件。
)
H-F→X:
0.5(E-D)÷(G-F)→N←┘
C+(XD+NX2)*180÷π→P:
P<0=>P+360→P:
P>360=>P-360→P←┘A+∫(cos(C+(XD+NX2)*180÷π),0,X)+Lcos(P+O)→U←┘
B+∫(sin(C+(XD+NX2)*180÷π),0,X)+Lsin(P+O)→V←┘
Q=2=>Goto4:
Cls:
Fix3←┘
"Xn=":
Locate4,1,U:
"Yn=":
Locate5,2,V:
“FWJ=”:
PDMS◢
Norm2:
Cls:
Goto1←┘
Lbl2:
“XD=,<0,STOP”?
R:
R<0=>Stop:
“YD=”?
S←┘
“KMDG=”?
H:
90→O:
0→L:
GotoZ←┘(H线路范围内的任意桩号)
Lbl4:
Pol(R-U,S-V):
J<0=>J+360→J←┘
Whileabs(Icos(J-P))≤0.001:
P-J>180=>J+360→J:
P-J<-180=>P+360→P:
IfP-J>0:
then-I→L:
elseI→L:
Ifend:
Goto3:
Whileend:
H+Icos(J-P)→H:
GotoZ←┘
Lbl3:
Cls:
Fix3←┘
“KM=”:
Locate4,1,H:
“PY=”:
Locate4,2,L◢
Norm2:
Cls:
Goto2←┘
01(数据库子程序)
IfH<=第一曲线终点桩号:
then第一曲线起点X→A:
第一曲线起点Y→B:
第一曲线起点方位角→C:
起点曲率→D:
终点曲率→E:
起点桩号→F:
终点桩号→G:
return:
ifend
……………
程序说明:
1、该程序可以计算任意线形(直线、圆曲线、缓和曲线、不完整曲线)任意桩号的坐标(正算,输入1),也可根据坐标计算该点到线路的距离及垂足桩号(反算,输入2);
2、(NEW=0,OLD≠0)?
如果要计算的点为数据库线路中的点,则输入数据库编号(以整数1、2、3…代替输入);如果在数据库中没有要计算线路的数据,则输入曲线要素
X0:
曲线起点X坐标;
Y0:
曲线起点Y坐标;
C0:
曲线起点方位角;
R0-1、RI-1:
曲线起点、终点曲率,直线为0,曲线左偏L输入负值,右偏R输入正值;
SP、EP:
曲线起点桩号,终点桩号;
KM:
待求点桩号;
PJ:
正斜交的设定;
PY:
偏中距离,线路上的点输入0,右偏输入+值,左偏输入-值;
3、正算显示坐标及切线方位角;反算输入线路的任意桩号(此桩号越接近真实值计算速度越快)、待求点坐标,显示待求点桩号及偏中距离;
4、正算子程序为积分公式编写而成;反算子程序为角度趋近的方法编写,计算速度有点慢。
5、此程序显示较直观,结果在同一屏幕显示。
注*:
程序中乘号用*标示,其余为X。
5800全线任意点设计高程计算,可计算竖曲线范围内外任意点的设计高程!
“BPDZH=”?
Z:
“GC=”?
H:
“R=”?
R:
“I1=”?
I:
“I2=”?
L:
“T=”:
0.005RAbs(I-L)→T◢
“E=”:
T2÷2÷R◢
Lbl0:
“JZZH=”?
→K:
Z-T→A:
Z+T→B:
K-A→C:
B-K→D:
K-Z→E←┘
IfL>I:
Then1→J:
Else-1→J:
IfEnd←┘
IfKB=>0→D:
IfEnd←┘
IfK≦Z:
ThenI→Y:
C→G:
ElseK>Z=>L→Y:
D→G:
IfEnd←┘
Lbl1:
Fix3:
“H=”:
H+EY÷100+JG2÷2÷R◢
Goto0←┘
说明:
BPDZH:
前变坡点桩号用变量Z表示
H:
前变坡点高程
R:
半径
IL:
前后纵坡值输入格式:
6.1%输入6.1,有负号的要输入负号
T:
切线长E:
竖距
JZZH:
待求点设计高程的桩号用变量K表示
Fix3:
计算结果保留3位小数
5800计算器公路全线坐标
正、反算计算程序
正算主程序(ZS)
Lb10
FIX4:
?
S:
?
Z:
Prog“PM-SJ”:
Abs(S-O)→W:
Prog"SUB1":
"XS=":
X◢
"YS=":
Y◢F-90→F(需要时可以让他显示,不要时不必输入):
Prog“SQX-SJ”:
Prog“SQX”:
“H=”:
H◢
Goto0
反算主程序(FS)
正算子程序(SUB1):
(P-R)÷(2HPR)→D:
180÷π→E:
0.1739274226→A:
0.3260725774→B:
0.0694318442→K:
0.3300094782→L:
1-L→F:
1-K→M:
U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW(C+FWD))+Acos(G+QEMW(C+MWD)))→X:
V+W(Asin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G+QEMW(C+MWD)))→Y:
G+QEW(C+WD)+90→F:
X+ZcosF→X:
Y+ZsinF→Y反算子程序(SUB2):
Abs((Y-V)cosT-(X-U)sin(T))→W:
0→Z:
Lbl0:
Prog"SUB1":
T+QEW(C+WD)→L:
(J-Y)cosL-(I-X)sinL→Z:
ifAbsZ<1E-6:
thenGoto1:
ElssW+Z→W:
Goto0:
IfEnd←┘:
0→Z:
Prog"SUB1":
(J-Y)÷sinF→Z子程序(平面线形数据库)PM-SJ
1÷P→C
G-90→T
Lbl1
ifS≥500(线元起点里程)AndS<769.256(线元止点里程):
Then19942.837→U(线元起点X坐标):
28343.561→V(线元起点Y坐标):
500→O(线元起点里程):
125°16°31°→G(线元起点方位角):
269.265→H(线元长度):
10^(45)→P(线元起点曲率半径):
10^(45)→R(线元终点曲率半径):
0→Q(线元左右偏标志:
左负右正):
IfEnd←┘
ifS≥769.256(线元起点里程)AndS<806.748(线元止点里程):
Then19787.34→U(线元起点X坐标):
28563.378→V(线元起点Y坐标):
769.256→O(线元起点里程):
125°16°31°→G(线元起点方位角):
37.492→H(线元长度):
10^(45)→P(线元起点曲率半径):
221.75→R(线元终点曲率半径):
-1→Q(线元左右偏标志:
左负右正):
IfEnd←┘
ifS≥806.748(线元起点里程)AndS<919.527(线元止点里程):
Then19766.566→U(线元起点X坐标):
28594.574→V(线元起点Y坐标):
806.748→O(线元起点里程):
120°25°54.07°→G(线元起点方位角):
112.779→H(线元长度):
221.75→P(线元起点曲率半径):
221.75→R(线元终点曲率半径):
-1→Q(线元左右偏标志:
左负右正):
IfEnd←┘
ifS≥919.527(线元起点里程)AndS<999.812(线元止点里程):
Then19736.072→U(线元起点X坐标):
28701.893→V(线元起点Y坐标):
919.527→O(线元起点里程):
91°17°30.63°→G(线元起点方位角):
80.285→H(线元长度):
221.75→P(线元起点曲率半径):
9579.228→R(线元终点曲率半径):
-1→Q(线元左右偏标志:
左负右正):
IfEnd←┘
ifS≥999.812(线元起点里程):
Then19744.038→U(线元起点X坐标):
28781.659→V(线元起点Y坐标):
999.812→O(线元起点里程):
80°40°50°→G(线元起点方位角):
100→H(线元长度):
10^(45)→P(线元起点曲率半径):
10^(45)→R(线元终点曲率半径):
0→Q(线元左右偏标志:
左负右正):
IfEnd←┘
子程序(竖曲线数据库)SQX-SJ
ifS≤999.812(竖曲线终点里程):
then0.0357(前坡度:
上坡正下坡负)→E:
0.0227(后坡度:
上坡正下坡负)→F:
600→R(竖曲线半径):
780→G(变坡点里程):
110→C(变坡点高程):
IfEnd←┘
子程序(竖曲线计算公式)SQX
E-F→J:
ifJ>0:
then-R→R:
ElssR→R:
Abs(R*J÷2)→T:
IfEnd←┘
ifS≤G-T:
thenG-S→L:
C-LE→H:
IfEnd←┘
ifS>G-TAndS≤G:
thenG-S→L:
(S+T-G)²÷2÷R→N:
C-LE+N→H:
IfEnd←┘
ifS>GAndS≤G+T:
thenS-G→L:
(G+T-S)²÷2÷R→N:
C+LF+N→H:
IfEnd←┘
ifS>G+T:
thenS-G→L:
C+LF→H:
IfEnd←┘
三、使用说明
1、规定
(1)以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2)当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右侧时,Z取正值。
(3)当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
(4)当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆弧的半径。
(5)当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
以上程序为个人改编而得,如有好的建议及不妥处请留言。
如有好的程序,也发一份我共享啊!