5800全线计算程序.docx
- 文档编号:30036810
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:10
- 大小:21.04KB
5800全线计算程序.docx
《5800全线计算程序.docx》由会员分享,可在线阅读,更多相关《5800全线计算程序.docx(10页珍藏版)》请在冰豆网上搜索。
5800全线计算程序
资料详细介绍:
本程序由4800程序改编而成,网上有5800积分通用公式,但由坐标反算里程及边距时很慢,本程序大大提高了反算速度。
1.主程序(TYQXJS)
Lbl4:
"1.SZ=>XY":
"2.XY=>SZ":
?
N:
?
S:
Prog“SUB0”↙
1÷P→C:
(P-R)÷(2HPR)→D:
180÷∏→E:
N=1=>Goto1:
Goto2:
↙
Lbl1:
?
Z:
Abs(S-O)→W:
Prog"SUB1":
"XS=":
X◢
"YS=":
Y◢F-90→F:
“FS=”:
F▲DMS◢:
Goto4↙
Lbl2:
?
X:
?
Y:
X→I:
Y→J:
Prog“SUB2”:
O+W→S:
“S=”:
S◢“Z=”:
Z◢Goto4↙
2.正算子程序(SUB1)
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+Zcos(F)→X:
Y+Zsin(F)→Y
2.反算子程序(SUB2)
G-90→T:
Abs((Y-V)cosT-(X-U)sinT)→W:
0→Z:
Lbl0:
Prog"SUB1":
T+QEW(C+WD)→L:
(J-Y)cos(L)-(I-X)sin(L)→Z:
Abs(Z)<1E-6=>Goto1:
W=W+Z:
Goto0Δ←┘
Lbl1:
Z=0:
Prog"SUB1":
(J-Y)÷sin(F)→Z
SUB0数据库子程序
Goto1↙同时保存多个曲线时的指针
Lbl1:
IFS<***(线元终点里程):
Then***→G(线元起点方位角):
***→O(线元起点里程):
***→U(线元起点X):
***→V(线元起点Y):
***→P(线元起点曲率半径):
***→R(线元终点曲率半径):
***→H(线元起点至终点长度):
0或1、-1→Q:
Return:
IfEnd↙
Lbl1:
IFS<***(线元终点里程):
Then***→G(线元起点方位角):
***→O(线元起点里程):
***→U(线元起点X):
***→V(线元起点Y):
***→P(线元起点曲率半径):
***→R(线元终点曲率半径):
***→H(线元起点至终点长度):
0或1、-1→Q:
Return:
IfEnd
………………………..
为了便于解读,每增加一个线元增加一行语句,每增加一条曲线增加一个Lbl,每增加一个工程增加一个文件。
三、使用说明
1、规定
(1)以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2)当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右
侧时,Z取正值。
(3)当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
(4)当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
弧的半径。
(5)当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45
次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半
径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
值;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
2、输入与显示说明
输入部分:
1.SZ=>XY
2.XY=>SZ
N?
选择计算方式,输入1表示进行由里程、边距计算坐标;输入2表示由坐标反算里程和边距。
S?
正算时所求点的里程,反算时为所求点的近似里程,反算时输入的近似里程不能夸线元,若夸线元的话,需进行第二次反算,并以第一次的结果做为近似里程,否则反算的里程及边距不对,Z?
正算时所求点距中线的边距(左侧取负,值右侧取正值,在中线上取零)
X?
反算时所求点的X坐标
Y?
反算时所求点的Y坐标
显示部分:
XS=×××正算时,计算得出的所求点的X坐标
YS=×××正算时,计算得出的所求点的Y坐标
FS=×××正算时,所求点对应的中线点的切线方位角
S=×××反算时,计算得出的所求点的里程
Z=×××反算时,计算得出的所求点的边距
曲線任意里程中邊樁坐標正反算5800p
TYQXJS(主程序名)
LbI0:
4→Dimz:
Cls
"1.SZ→XY"
"2.XY→SZ"?
→N:
Cls
"XO"?
U:
"YO"?
V:
"SO"?
O:
"FO"?
G:
"LS"?
H:
"RO"?
P:
"RN"?
R:
?
Q
1÷P→C:
(P-R)÷(2HPR)→D:
180÷π→E
N=2=>Goto2
LbI1:
Cls:
?
S
S=0=>Goto0 (注:
當S輸入0時,程序會由LbI0開始重新運行)
?
Z:
Abs(S-O)→W
Prog"SUB1":
Cls
"XS=":
X◢
"YS=":
Y◢
"FS=":
F-90►DMS◢
Goto1
LbI2:
Cls:
?
X
X=0=>Goto0 (注:
當X輸入0時,程序由會LbI0開始重新運行)
?
Y:
X→I:
Y→J
Prog"SUB2":
O+W→S:
Cls
"S=":
S◢
"Z=":
Z◢
Goto2
注:
紅色部可以不要,亦可以要,它的作用是將S或X輸入0時,程序會重新由頭開始運行,(即是可以計算下段線元)
SUB1(子程序名)
0.1739274226→A:
0.3260725774→B
0.0694318442→K:
0.3300094782→L
1-L→F:
1-K→M
G+QEKW(C+KWD)→Z[1]
G+QELW(C+LWD)→Z[2]
G+QEFW(C+FWD)→Z[3]
G+QEMW(C+MWD)→Z[4]
A×cos(Z[1])→X (剩號可省略)
X+Bcos(Z[2])→X
X+Bcos(Z[3])→X
X+Acos(Z[4])→X
U+WX→X
Asin(Z[1])→Y
Y+Bsin(Z[2])→Y
Y+Bsin(Z[3])→Y
Y+Asin(Z[4])→Y
V+WY→Y
G+QEW(C+WD)+90→F
X+Zcos(F)→X
Y+Zsin(F)→Y
SUB2(子程序名)
G-90→T
(Y-V)cos(T)-(X-U)sin(T)→W
Abs(W)→W:
0→Z
LbI4:
Prog"SUB1"
T+QEW(C+WD)→L
(J-Y)cos(L)-(I-X)sin(L)→Z
IfAbs(Z)<1E-6:
Then0→Z:
Prog"SUB1"
(J-Y)÷sin(F)→Z
ElseW+Z→W:
Goto4:
IfEnd
注:
1E-6即是10的負6次方,亦即是等於0.000001
輸入時按SHIFT---log---(-)---6
亦可直接將IfAbs(Z)<1E-6寫成IfAbs(Z)<0.000001
注意:
本程序是根據yhhf編寫的4800P改寫而成,以下是源程序及算例
大家有問題亦可在以下網址查看及向yshf發問
曲线任意里程中边桩坐标正反算(CASIOfx-4800P计算器)程序
一、程序功能
本程序由一个主程序(TYQXJS)和两个子程——正算子程序(SUB1)、反算子程序(
SUB2)序构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线
元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲
率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。
另
外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲
线任意里程中边桩坐标进行正反算。
本程序也可以在CASIOfx-4500P计算器及CASIOfx-4850P计算器上运行。
特别申明:
(1).适用于弧长小于2倍半径的各种线元坐标正反算,精度优
于1mm;
(2).在引用该核心计算部分时,请注明来源。
二、源程序
1.主程序(TYQXJS)
"1.SZ=>XY":
"2.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=>Goto1:
≠>Goto2Δ←┘
Lbl1:
{SZ}:
SZ:
W=Abs(S-O):
Prog"SUB1":
X"XS"=X◢
Y"YS"=Y◢
F"FS"=F-90◢
Goto1←┘
Lbl2:
{XY}:
XY:
I=X:
J=Y:
Prog"SUB2":
S"S"=O+W◢
Z"Z"=Z◢
Goto2
2.正算子程序(SUB1)
A=0.1739274226:
B=0.3260725774:
K=0.0694318442:
L=0.3300094782:
F=1-L:
M=1-K:
X=U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW
(C+FWD))+Acos(G+QEMW(C+MWD))):
Y=V+W(Asin(G+QEKW(C+KWD))+Bsin(G+
QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G+QEMW(C+MWD))):
F=G+QEW(C+
WD)+90:
X=X+ZcosF:
Y=Y+ZsinF
3.反算子程序(SUB2)
T=G-90:
W=Abs((Y-V)cosT-(X-U)sinT):
Z=0:
Lbl0:
Prog"SUB1":
L=T+QEW(C+
WD):
Z=(J-Y)cosL-(I-X)sinL:
AbsZ<1E-6=>Goto1:
≠>W=W+Z:
Goto0Δ←┘
Lbl1:
Z=0:
Prog"SUB1":
Z=(J-Y)÷sinF
三、使用说明
1、规定
(1)以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。
(2)当所求点位于中线时,Z=0;当位于中线左铡时,Z取负值;当位于中线中线右
侧时,Z取正值。
(3)当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
(4)当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
弧的半径。
(5)当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45
次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半
径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6)当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
值;与圆曲线相接时,曲率半径等于圆曲线的半径。
止点与直线相接时,曲率半径等
于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
2、输入与显示说明
输入部分:
1.SZ=>XY
2.XY=>SZ
N?
选择计算方式,输入1表示进行由里程、边距计算坐标;输入2表示由坐标反算
里程和边距。
X0?
线元起点的X坐标
Y0?
线元起点的Y坐标
S0?
线元起点里程
F0?
线元起点切线方位角
LS?
线元长度
R0?
线元起点曲率半径
RN?
线元止点曲率半径
Q?
线元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)
S?
正算时所求点的里程
Z?
正算时所求点距中线的边距(左侧取负,值右侧取正值,在中线上取零)
X?
反算时所求点的X坐标
Y?
反算时所求点的Y坐标
显示部分:
XS=××× 正算时,计算得出的所求点的X坐标
YS=××× 正算时,计算得出的所求点的Y坐标
FS=××× 正算时,所求点对应的中线点的切线方位角
S=××× 反算时,计算得出的所求点的里程
Z=××× 反算时,计算得出的所求点的边距
四、算例
某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组
成,各段线元的要素(起点里程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.75221.75 -1
919.527 19736.072 28701.893 911730.63 80.285 221.759579.228 -1
999.812 19744.038 28781.659 804050.00 100.000 1E45 1E45 0
1、正算
(注意:
略去计算方式及线元要素输入,请自行根据所求点所在的线元输入线元
要素)
S=700 Z=-5 计算得 XS=19831.41785 YS=28509.72590
S=700 Z=0 计算得 XS=19827.33592 YS=28506.83837
S=700 Z=5 计算得 XS=19823.25398 YS=28503.95084
S=780 Z=-5 计算得 XS=19785.25749 YS=28575.02270
S=780 Z=0 计算得 XS=19781.15561 YS=28572.16358
S=780 Z=5 计算得 XS=19777.05373 YS=28569.30446
S=870 Z=-5 计算得 XS=19747.53609 YS=28654.13091
S=870 Z=0 计算得 XS=19742.68648 YS=28652.91379
S=870 Z=5 计算得 XS=19737.83688 YS=28651.69668
S=940 Z=-5.123 计算得 XS=19741.59118 YS=28722.05802
S=940 Z=0 计算得 XS=19736.47687 YS=28722.35642
S=940 Z=3.009 计算得 XS=19733.47298 YS=28722.53168
2、反算
X=19831.418 Y=28509.726 计算得 S=699.9999974 Z=-5.00018164
X=19827.336 Y=28506.838 计算得 S=699.9996493 Z=0.000145136
X=19823.25398 Y=28503.95084 计算得 S=699.9999985 Z=5.000003137
X=19785.25749 Y=28575.02270 计算得 S=780.0000035 Z=-5.000001663
X=19781.15561 Y=28572.16358 计算得 S=780.0000025 Z=-0.000002979
X=19777.05373 Y=28569.30446 计算得 S=780.0000016 Z=4.99999578
X=19747.536 Y=28654.131 计算得 S=870.0001137 Z=-4.99941049
X=19742.686 Y=28652.914 计算得 S=870.0003175 Z=-0.00041814
X=19737.837 Y=28651.697 计算得 S=870.0002748 Z=4.999808656
X=19741.5912 Y=28722.0580 计算得 S=939.9999786 Z=-5.123024937
X=19736.4769 Y=28722.3564 计算得 S=939.9999862 Z=-0.000027710
X=19733.4730 Y=28722.5317 计算得 S=940.0000238 Z=3.00898694
TYQXJS(主程序名)
LbI0:
4→Dimz:
Cls
"1.SZ→XY"
"2.XY→SZ"?
→N:
Cls
"XO"?
U:
"YO"?
V:
"SO"?
O:
"FO"?
G:
"LS"?
H:
"RO"?
P:
"RN"?
R:
?
Q
1÷P→C:
(P-R)÷(2HPR)→D:
180÷π→E
N=2=>Goto2
LbI1:
Cls:
?
S
S=0=>Goto0 (注:
當S輸入0時,程序會由LbI0開始重新運行)
?
Z:
Abs(S-O)→W
Prog"SUB1":
Cls
"XS=":
X◢
"YS=":
Y◢
"FS=":
F-90?
DMS◢
Goto1
LbI2:
Cls:
?
X
X=0=>Goto0 (注:
當X輸入0時,程序由會LbI0開始重新運行)
?
Y:
X→I:
Y→J
Prog"SUB2":
O+W→S:
Cls
"S=":
S◢
"Z=":
Z◢
Goto2
注:
紅色部可以不要,亦可以要,它的作用是將S或X輸入0時,程序會重新由頭開始運行,(即是可以計算下段線元)
SUB1(子程序名)
0.1739274226→A:
0.3260725774→B
0.0694318442→K:
0.330009482→L
1-L→F:
1-K→M
G+QEKW(C+KWD)→Z[1]
G+QELW(C+LWD)→Z[2]
G+QEFW(C+FWD)→Z[3]
G+QEMW(C+MWD)→Z[4]
A×cos(Z[1])→X (剩號可省略)
X+Bcos(Z[2])→X
X+Bcos(Z[3])→X
X+Acos(Z[4])→X
U+WX→X
Asin(Z[1])→Y
Y+Bsin(Z[2])→Y
Y+Bsin(Z[3])→Y
Y+Asin(Z[4])→Y
V+WY→Y
G+QEW(C+WD)+90→F
X+Zcos(F)→X
Y+Zsin(F)→Y
SUB2(子程序名)
G-90→T
(Y-V)cos(T)-(X-U)sin(T)→W
Abs(W)→W:
0→Z
LbI4:
Prog"SUB1"
T+QEW(C+WD)→L
(J-Y)cos(L)-(I-X)sin(L)→Z
IfAbs(Z)<1E-6:
Then0→ZProg"SUB1"
(J-Y)÷sin(F)→Z
ElseW+Z→W:
Goto4:
IfEnd
注:
1E-6即是10的負6次方,亦即是等於0.000001
輸入時按SHIFT---log---(-)---6
亦可直接將IfAbs(Z)<1E-6寫成IfAbs(Z)<0.000001
注意:
本程序是根據yhhf編寫的4800P改寫而成,以下是源程序及算例
大家有問題亦可在以下網址查看及向yshf發問
曲线任意里程中边桩坐标正反算(CASIOfx-4800P计算器)程序
一、程序功能
本程序由一个主程序(TYQXJS)和两个子程——正算子程序(SUB1)、反算子程序(
SUB2)序构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线
元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲
率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。
另
外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲
线任意里程中边桩坐标进行正反算。
本程序也可以在CASIOfx-4500P计算器及CASIOfx-4850P计算器上运行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 5800 全线 计算 程序