5800计算器程序.docx
《5800计算器程序.docx》由会员分享,可在线阅读,更多相关《5800计算器程序.docx(23页珍藏版)》请在冰豆网上搜索。
5800计算器程序
曲線任意里程中邊樁坐標正反算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.→A:
0.→B
0.→K:
0.→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.
輸入時按SHIFT---log---(-)---6
亦可直接將IfAbs(Z)<1E-6寫成IfAbs(Z)<0.
注意:
本程序是根據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.:
B=0.:
K=0.:
L=0.:
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 LSR0RN Q
500.000 19942.837 28343.561 1251631.00 269.256 1E451E45 0
769.256 19787.340 28563.378 1251631.00 37.492 1E45221.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 1E451E45 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. Z=-5.
X=19827.336 Y=28506.838 计算得 S=699. Z=0.
X=19823.25398 Y=28503.95084 计算得 S=699. Z=5.
X=19785.25749 Y=28575.02270 计算得 S=780. Z=-5.
X=19781.15561 Y=28572.16358 计算得 S=780. Z=-0.
X=19777.05373 Y=28569.30446 计算得 S=780. Z=4.
X=19747.536 Y=28654.131 计算得 S=870. Z=-4.
X=19742.686 Y=28652.914 计算得 S=870. Z=-0.
X=19737.837 Y=28651.697 计算得 S=870. Z=4.
X=19741.5912 Y=28722.0580 计算得 S=939. Z=-5.
X=19736.4769 Y=28722.3564 计算得 S=939. Z=-0.
X=19733.4730 Y=28722.5317 计算得 S=940. Z=3.
谢谢发贴:
+24分【测量空间】[0
查看楼主其它文章 <<返回
→ 回复内容 只查看楼主与本人回复
沙发:
哈哈明
09-1-299:
33回
评:
+8分
详细,简洁,不错,适合初学者。
谢谢楼主辛苦改编
2楼:
蓝天小乖
09-2-514:
4回
评:
+6分
谢谢!
我下载试试。
3楼:
'workers
09-2-720:
12回
本人是初学者,对于正算算例里的起点曲率半径R0、止点曲率半径RN、线元左右偏标志Q的数值不是很明白
4楼:
'workers
09-2-720:
38回
抱歉,认真看了说明后已经知道起点曲率半径R0=10的45次方,止点曲率半径RN=10的45次方、线元左右偏标志Q的数值=0.只是套用算例中的数据计算后,误差惨不忍睹.
5楼:
'workers
09-2-80:
35回
我是如下输入程序的,请LZ看看错误在哪,
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
?
Z:
Abs(S-O)→W
Prog"SUB1":
Cls
"XS=":
X◢
"YS=":
Y◢
"FS=":
F-90►DMS◢ (90与►DMS有空格?
?
?
?
?
?
)
Goto1
LbI2:
Cls:
?
X
X=0=>Goto0
?
Y:
X→I:
Y→J
Prog"SUB2":
O+W→S:
Cls
"S=":
S◢
"Z=":
Z◢
Goto2
SUB1(子程序名)
0.→A:
0.→B
0.→K:
0.→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]
Acos(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)<10∧(-6):
Then0→ZProg"SUB1" (Z与Prog"SUB1"之间的空格?
?
?
)
(J-Y)÷sin(F)→Z
ElseW+Z→W:
Goto4:
IfEnd
6楼:
tung楼主
09-2-815:
34回
所有程序都沒有空格,一直輸入就可以,轉行別忘記按EXE鍵,
本人輸入后,計算所得答案与yshf提供的答案一樣
=>---是一內置符號.輸入按FUNCTION3REPLAY(向下鍵二下)3
大家有問題亦可在以下網址查看及向yshf發問
7楼:
'it87520
09-2-1520:
18回
评:
+6分
很好,很简洁,辛苦啦,非常感谢
8楼:
'hong
09-2-1922:
49回
评:
+10分
楼主,哪些地方要转行的呢?
9楼:
'hong
09-2-200:
19回
评:
+10分
楼主,怎么我到Q就错了呢?
1.SZ=>XY
2.XY=>SZ
N?
选择计算方式,输入1表示进行由里程、边距计算坐标;输入2表示由坐标反算
里程和边距。
X0?
线元起点的X坐标
Y0?
线元起点的Y坐标
S0?
线元起点里程
F0?
线元起点切线方位角
LS?
线元长度
R0?
线元起点曲率半径
RN?
线元止点曲率半径
到了Q?
就错了
10楼:
'鸿
09-2-200:
25回
评:
+10分
楼主,你能用电话帮我下吗?
我真的不知道错在哪,你发条信息来,我给你回打电话。
谢谢了
11楼:
'geergril
09-2-2018:
41回
评:
+10分
输入变量运算正确,但强烈建议楼主将其改编为数据库型的最好,期待楼主出新版本!
!
!
12楼:
tung楼主
09-2-2019:
50回
10楼:
鸿
建议再检查清楚
13楼:
'it87520
09-2-2023:
24回
楼主,请问一下,为什么我反算的时侯桩号会对而距离不对?
还有就是该语句IfAbs(Z)<10∧(-6):
Then0→ZProg"SUB1"后面的0→Z:
Prog"SUB1"是否要加冒号?
14楼:
'111
09-2-229:
29回
评:
+4分
楼主, 我为什么正算行 反算就不行了 那里有问题 请你仔细检查检查
15楼:
'111
09-2-229:
30回
评:
+4分
楼主, 我为什么正算行 反算就不行了 那里有问题 请你仔细检查检查
16楼:
tung楼主
09-2-2218:
55回
13楼:
it87520
要加冒号的,多谢提示,已更正
IfAbs(Z)<10∧(-6):
Then0→Z:
Prog"SUB1"
17楼:
tung楼主
09-2-2220:
37回
14楼:
111
本人初次输入后亦有问题,经多次检查后才能使用
运行程序时程序如显示SyntaxERROR,这表示程序中欠缺了某种符号,例如冒号.变量(英文字母)等
这时你要按AC键或者EXIT键看下光标停在什么位置,并检查光标附近句子是缺少了什么符号
18楼:
'hanhan
09-2-2219:
55回
评:
+8分
请问楼主,我按照你上面程序编写还是不能进行计算~~~
我编写完成后,输入第一个命令就是选择正算还是反算(我那个计算器上面没有出现N这个符号,不知道是什么原因)
19楼:
tung楼主
09-2-2220:
35回
18楼:
hanhan
没错,N这个变量是不会显示的,应该显示如下:
1.SZ→XY
2.XY→SZ?
执行SZ→XY时------输入1EXE
执行XY→SZ时------输入2EXE
20楼:
'111
09-2-239:
13回
评:
+10分
对了 谢谢
21楼:
'hanhan
09-2-239:
37回
评:
+8分
请问楼主,整个程序我照你上面编写,执行还是不成功哦~~~
不知道是什么原因哦(执行程序之后出现:
GO ERROR
22楼:
'hanhan
09-2-2310:
37回
评:
+8分
请问楼主,程序里面0和o如何区分~~
23楼:
'geergirl
09-2-2315:
42回
这个程序手输线元参数后计算结果是正确的,但不是数据库,感觉不好
24楼:
'hanhan
09-2-2317:
47回
听不懂,数据库程序跟这个有区别吗?
?
可以讲解一下吗?
25楼:
tung楼主
09-2-2320:
17回
LbI0
X=0=>Goto0
以上的是零(比较扁瘦)
"XO"?
U:
"YO"?
V:
"SO"?
O:
"FO"?
G:
"LS"?
H:
"RO"?
P:
"RN"?
R:
?
Q
以上的是英文字母O(比较园肥)
26楼:
'geergirl
09-2-2320:
33回
评:
+6分
输入变量运算正确,但强烈建议楼主将其改编为数据库型的最好能全线连续计算,期待楼主出新版本!
!
!
27楼:
'包西
09-2-2321:
47回
楼主你好,可以给我说说在那里可以找到这几个固定值吗?
谢谢了, 0.→A:
0.→B
0.→K :
0.→L
28楼:
vbvbvbvb
09-2-2322:
32回
楼主:
:
这个5800程序,怎样加入数据库?
?
?
?
4850已解决!
!
29楼:
'liugang
09-2-2518:
0回
这个程序4800版本我一直在用(已经2年了),现在出来了5800版本,真高兴啊,只是给楼主提个问题:
应用中发现反算程序计算里程和偏移值相差太大,只有把反算程序运行两次差值才可以达到精度,请问楼主是否注意到,能否改进
30楼:
tung楼主
09-2-2519:
59回
27.28.28搂:
这个程序不是我编写的,是改编自本论坛yshf的4800p
大家有問題亦可在以下網址查看及向yshf發問