曲線任意里程中边桩正反算5800p
TYQXJS(主程序名) LbI 0: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=>Goto 2
LbI 1:Cls:?S:?Z:Abs(S-O)→W Prog\"SUB1\":Cls \"XS=\":X◢ \"YS=\":Y◢
\"FS=\":F-90 ►DMS◢ Goto 1
LbI 2:Cls:?X:?Y:X→I:Y→J Prog\"SUB2\":O+W→S:Cls \"S=\":S◢ \"Z=\":Z◢ Goto 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+ZcosF →X: Y+ZsinF→ Y
SUB2(子程序名) G-90→T
(Y-V)cos(T)-(X-U)sin(T)→W Abs(W)→W:0→Z LbI 4:Prog\"SUB1\" T+QEW(C+WD)→L
(J-Y)cos(L)-(I-X)sin(L)→Z
If Abs(Z)<1E-6:Then 0→Z :Prog\"SUB1\" (J-Y)÷sin(F)→Z
Else W+Z→W:Goto 4:IfEnd
注:1E-6即是10的負6次方,亦即是等於0.000001
曲线任意里程中边桩坐标正反算(CASIO fx-4800P计算器)程序 一、程序功能
本程序由一个主程序(TYQXJS)和两个子程——正算子程序(SUB1)、反算子程序(
SUB2)序构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线 元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲 率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。另 外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲
线任意里程中边桩坐标进行正反算。本程序也可以在CASIO fx-4500P计算器及 CASIO fx-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=>Goto 1:≠>Goto 2Δ←┘ Lbl 1:{SZ}:SZ:W=Abs(S-O):Prog \"SUB1\":X\"XS\"=X◢ Y\"YS\"=Y◢ F\"FS\"=F-90◢ Goto 1←┘
Lbl 2:{XY}:XY:I=X:J=Y:Prog \"SUB2\":S\"S\"=O+W◢ Z\"Z\"=Z◢ Goto 2
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:Lbl 0:Prog \"SUB1\":L=T+QEW(C+ WD):Z=(J-Y)cosL-(I-X)sinL:AbsZ<1E-6=>Goto1:≠>W=W+Z:Goto 0Δ←┘ Lbl 1: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、起点坐标X0 Y0、起点切线方位角F0、线元长度 LS、起点曲率半径R0、止点曲率半径RN、线 元左右偏标志Q)如下: S0 X0 Y0 F0 LS R0 RN Q
500.000 19942.837 28343.561 125 16 31.00 269.256 1E45 1E45 0
769.256 19787.340 28563.378 125 16 31.00 37.492 1E45 221.75 -1
806.748 19766.566 28594.574 120 25 54.07 112.779 221.75 221.75 -1
919.527 19736.072 28701.893 91 17 30.63 80.285 221.75 9579.228
-1
999.812 19744.038 28781.659 80 40 50.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
谢谢发贴:+30 分 【测量空间】www.celiang.net[0
查看楼主其它文章 <<返回
→ 回复内容 只查看楼主与本人回复 沙发:哈哈明 09-1-29 9:33 回 评:+8 分
详细,简洁,不错,适合初学者。谢谢楼主辛苦改编 2 楼:蓝天小乖 09-2-5 14:4 回 评:+6 分 谢谢!我下载试试。
3 楼:'workers 09-2-7 20:12 回
本人是初学者,对于正算算例里的起点曲率半径R0、止点曲率半径RN、线 元左右偏标志Q的数值不是很明白
4 楼:'workers 09-2-7 20:38 回
抱歉,认真看了说明后已经知道起点曲率半径R0=10的45次方,止点曲率半径RN=10的45次方、线 元左右偏标志Q的数值=0.只是套用算例中的数据计算后,误差惨不忍睹. 5 楼:'workers 09-2-8 0:35 回
我是如下输入程序的,请LZ看看错误在哪,
TYQXJS(主程序名) LbI 0: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=>Goto 2 LbI 1:Cls:?S S=0=>Goto 0 ?Z:Abs(S-O)→W Prog\"SUB1\":Cls \"XS=\":X◢ \"YS=\":Y◢
\"FS=\":F-90 ►DMS◢ (90与►DMS有空格??????) Goto 1
LbI 2:Cls:?X X=0=>Goto 0 ?Y:X→I:Y→J
Prog\"SUB2\":O+W→S:Cls \"S=\":S◢ \"Z=\":Z◢
Goto 2
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] 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 LbI 4:Prog\"SUB1\" T+QEW(C+WD)→L
(J-Y)cos(L)-(I-X)sin(L)→Z
If Abs(Z)<10∧(-6):Then 0→Z Prog\"SUB1\" (Z与Prog\"SUB1\"之间的空格???) (J-Y)÷sin(F)→Z
Else W+Z→W:Goto 4:IfEnd
6 楼:tung 楼主 09-2-8 15:34 回
所有程序都沒有空格,一直輸入就可以,轉行別忘記按EXE鍵, 本人輸入后,計算所得答案与yshf提供的答案一樣 =>---是一內置符號.輸入按FUNCTION 3 REPLAY(向下鍵二下) 3
大家有問題亦可在以下網址查看及向yshf發問
http://www.celiang.net/celiang/article_view.asp?id=380&author=yshf 7 楼:'it87520 09-2-15 20:18 回 评:+6 分 很好,很简洁,辛苦啦,非常感谢
8 楼:'hong 09-2-19 22:49 回 评:+10 分 楼主,哪些地方要转行的呢?
9 楼:'hong 09-2-20 0: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-20 0:25 回 评:+10 分
楼主,你能用电话帮我下吗?我真的不知道错在哪,你发条信息来,我给你回打电话。谢谢了
11 楼:'geergril 09-2-20 18:41 回 评:+10 分
输入变量运算正确,但强烈建议楼主将其改编为数据库型的最好,期待楼主出新版本!!! 12 楼:tung 楼主 09-2-20 19:50 回 10楼:鸿
建议再检查清楚
13 楼:'it87520 09-2-20 23:24 回
楼主,请问一下,为什么我反算的时侯桩号会对而距离不对?
还有就是该语句If Abs(Z)<10∧(-6):Then 0→Z Prog\"SUB1\"后面的0→Z:Prog\"SUB1\"是否要加冒号?
14 楼:'111 09-2-22 9:29 回 评:+4 分
楼主, 我为什么正算行 反算就不行了 那里有问题 请你仔细检查检查 15 楼:'111 09-2-22 9:30 回 评:+4 分
楼主, 我为什么正算行 反算就不行了 那里有问题 请你仔细检查检查 16 楼:tung 楼主 09-2-22 18:55 回 13楼:it87520
要加冒号的,多谢提示,已更正
If Abs(Z)<10∧(-6):Then 0→Z :Prog\"SUB1\"
17 楼:tung 楼主 09-2-22 20:37 回 14楼:111
本人初次输入后亦有问题,经多次检查后才能使用
运行程序时程序如显示Syntax ERROR,这表示程序中欠缺了某种符号,例如冒号.变量(英文字母)等
这时你要按AC键或者EXIT键看下光标停在什么位置,并检查光标附近句子是缺少了什么符号
18 楼:'hanhan 09-2-22 19:55 回 评:+8 分
请问楼主,我按照你上面程序编写还是不能进行计算~~~
我编写完成后,输入第一个命令就是选择正算还是反算(我那个计算器上面没有出现N这个符号,不知道是什么原因)
19 楼:tung 楼主 09-2-22 20:35 回 18楼:hanhan
没错,N这个变量是不会显示的,应该显示如下: 1.SZ→XY 2.XY→SZ?
执行SZ→XY时------输入1 EXE 执行XY→SZ时------输入2 EXE
20 楼:'111 09-2-23 9:13 回 评:+10 分 对了 谢谢
21 楼:'hanhan 09-2-23 9:37 回 评:+8 分
请问楼主,整个程序我照你上面编写,执行还是不成功哦~~~ 不知道是什么原因哦(执行程序之后出现:GO ERROR 22 楼:'hanhan 09-2-23 10:37 回 评:+8 分 请问楼主,程序里面0和o如何区分~~ 23 楼:'geergirl 09-2-23 15:42 回
这个程序手输线元参数后计算结果是正确的,但不是数据库,感觉不好 24 楼:'hanhan 09-2-23 17:47 回
听不懂,数据库程序跟这个有区别吗?? 可以讲解一下吗? 25 楼:tung 楼主 09-2-23 20:17 回 LbI 0
X=0=>Goto 0
以上的是零(比较扁瘦)
\"XO\"?U: \"YO\"?V: \"SO\"?O:\"FO\"?G: \"LS\"?H: \"RO\"?P:\"RN\"?R:?Q 以上的是英文字母O(比较园肥)
26 楼:'geergirl 09-2-23 20:33 回 评:+6 分
输入变量运算正确,但强烈建议楼主将其改编为数据库型的最好能全线连续计算,期待楼主出新版本!!!
27 楼:'包西 09-2-23 21:47 回
楼主你好,可以给我说说在那里可以找到这几个固定值吗?谢谢了, 0.1739274226→A: 0.3260725774→B 0.0694318442→K :0.330009482→L 28 楼:vbvbvbvb 09-2-23 22:32 回 楼主:: 这个5800程序,怎样加入数据库???? 4850已解决!! 29 楼:'liugang 09-2-25 18:0 回
这个程序4800版本我一直在用(已经2年了),现在出来了5800版本,真高兴啊,只是给
楼主提个问题:应用中发现反算程序计算里程和偏移值相差太大,只有把反算程序运行两次差值才可以达到精度,请问楼主是否注意到,能否改进 30 楼:tung 楼主 09-2-25 19:59 回 27.28.28搂:
这个程序不是我编写的,是改编自本论坛yshf的4800p
大家有問題亦可在以下網址查看及向yshf發問
http://www.celiang.net/celiang/article_view.asp?id=380&author=yshf 31 楼:'liugang 09-2-25 21:48 回
哦,我以为你和4800那个程序是同一个人呢 32 楼:'zgc123a 09-2-26 9:55 回
楼主,我 你的程序输入 算出来的不对,会是那里出了问题,计算一般都是在你子程序里面吧,对过公司公式没有输错,,,
33 楼:loco001 09-2-27 9:14 回 评:+4 分 6楼:tung
请将以下程序转换成5800,谢谢 GAUSSLE坐标正反算fx-4850程序 源程序
1.正算主程序 GSZS
I\"X0\":S\"Y0\":O\"K0\":G\"F0\":H\"KN\":P\"R0\":R\"RN\":Q”Q(-Z +Y)” : D=(P-R)÷(2(H-O)PR):
KL”L(-Z +Y)” :M”ANG(YJJ)”=90:(注:此处若不给M赋值,则可计算斜交点) J=Abs(K-O):Prog\"SUB1\":
”FWJ=”:F=F-M:”X=”:X=X:Pause0: ”Y=”:Y=Y◢
2. 反算主程序 GSFS XY:Z[2]=X:Z[3] =Y:
I\"X0\":S\"Y0\":O\"K0\":G\"F0\":H\"KN\":P\"R0\":R\"RN\":Q”Q(-Z +Y)” : D=(P-R)÷(2(H-O)PR):
J=Abs((Y-S)cos(G-90)-(X-I)sin(G-90)): L=0:M”M(YJJ)”=90: Lbl 0:Prog \"SUB1\":
L=(Z[3]-Y)cos(G-90+QJ(1÷P+JD)×180÷π)-(Z[2]-X)sin(G-90+QJ(1÷P +JD) ×180÷π): AbsL<1E-6=>Goto1:≠>J=J+L:Goto 0Δ←┘ Lbl 1:L=0:Prog \"SUB1\":L=(Z[3]-Y)÷sinF: ”K=”:K=O+J:Pause0:”L=”:L=L◢
3. 正算子程序(SUB1) Defm 4:
A=0.1184634425:B=0.2393143352:Z[4]=0.2844444444:C=0.0469100770:E=0.2307653449:Z[1]=0.5:
X=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÷π)):
Y=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÷π)):
F=G+QJ(1÷P+JD) ×180÷π+M:X=X+LcosF:Y=Y+LsinF
4. 曲线元要素数据库:DAT-M
K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘ K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘ K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘ K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘ K≥O=>K≤H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘ ……………………………
K≥O=>K≤H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘ (注:如有多个曲线元要素继续添加入数据库DAT-M中)
5、M线(坐标正算)组合程序 MG-ZB Prog”DAT-M”:Prog”GSZS”
6、M线(坐标计算-放样)组合程序 MG-FY Prog”MG-ZB”:Prog”LTKZD”: Prog”FY”
7、M线(坐标反算)组合程序 M-GSFB Prog”DAT-M”:Prog”GSFS”
说明:
一、程序功能及原理 1.功能说明:
本程序由两个主程序——正算主程序(GSZS)、反算主程序(GSFS)和两个子程——正算子程序(SUB1)、线元数据库(DAT-M)构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、终点里程、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。本程序可以在CASIO fx-4800P计算器及 CASIO fx-4850P计算器上运行。由于加入了数据库(DAT-M),可实现坐标正反算的全线贯通。
组合程序5可实现M线的正算贯通,组合程序7可实现M线的反算贯通,组合程序6可实现坐标计算到放样一体化。 2.计算原理:
利用Gauss-Legendre 5点通用公式计算线路中边桩坐标并计算放样数据。
利用待求点至线元起点切线作垂线,逐次迭代趋近原理反算里程及边距。
二、使用说明 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)输入部分:
X0 ?线元起点的X坐标
Y0 ?线元起点的Y坐标 K0 ?线元起点里程
F0 ?线元起点切线方位角 KN ?线元终点里程 R0 ?线元起点曲率半径 RN ?线元止点曲率半径
Q ? 线 元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0) K ? 正算时所求点的里程
L ? 正算时所求点距中线的边距(左侧取负值,右侧取正值,在中线上取零) ANG?正算边桩时左右边桩连线与线路中线的右交角 X ? 反算时所求点的X坐标
Y ? 反算时所求点的Y坐标 M ? 斜交右角
线元要素数据库中K≥O=>K<H=>中的O和H分别为该段线元起点里程和终点里程 A、 B、Z[4] 是Gauss-Legendre求积公式中的插值系数 C 、E、Z[1] 是Gauss-Legendre求积公式中的求积节点 (2)显示部分:
X=××× 正算时,计算得出的所求点的X坐标
Y=××× 正算时,计算得出的所求点的Y坐标 K=××× 反算时,计算得出的所求点的里程 L=××× 反算时,计算得出的所求点的边距
三、算例
某匝道的由五段线元(直线+完整缓和曲线+圆曲线+非完整缓和曲线+直线)组成,各段线元的要素(起点里程S0、起点坐标X0 Y0、起点切线方位角F0、线元长度LS、起点曲率半径R0、止点曲率半径RN、线元左右偏标志Q)如下:
S0 X0 Y0 F0 LS R0 RN Q
500.000 19942.837 28343.561 125 16 31.00 269.256 1E45 1E45 0
769.256 19787.340 28563.378 125 16 31.00 37.492 1E45 221.75 -1
806.748 19766.566 28594.574 120 25 54.07 112.779 221.75 221.75 -1
919.527 19736.072 28701.893 91 17 30.63 80.285 221.75 9579.228 -1
999.812 19744.038 28781.659 80 40 50.00 100.000 1E45 1E45 0
(注:该算例中线元要素Ls为程序修改前须输入的线元长度,程序修改后改为输入线元终点里程KN)
放样程序 FY
U”XJ”:V”YJ”:W”XH”:Z”YH”:XY:I=W-U:J=Z-V:Pol(I,J):J<0=>J=J+360Δ “HSJL=”:I◢
O”HF”=J:X=0=>U=U+LCos(J+P”μ”): V=V+LSin(J+P”μ”):
”X=”:U:Pause0:”Y=”:V:≠>I=X-U:J=Y-V: Pol(I,J):J<0=>J=J+360:Δ H”QF”=J:J=H-O:J<0=>J=J+360:Δ
“ANG=”:J→DMS (该处不输Pause0语句亦可实现“ANG=”和“QSJL=”的同时出现) “QSJL=”:I
凌铁大桥控制点数据库 LTKZD
A=21:B=22:C=23:D=24:E=25:F=26:G=27:H=28:I=29←┘ T “ZJDH”:←┘
T=11=>U=****:V=****⊿←┘ T=12=>U=****:V=****⊿←┘ T=13=>U=****:V=****⊿←┘ T=15=>U=****:V=****⊿←┘ T= 4 =>U=****:V=****⊿←┘ T= A=>U=****:V=****⊿←┘
T= B=>U=****:V=****⊿←┘ T= C=>U=****:V=****⊿←┘
…………………………… (注:如有多个控制点继续添加入数据库LTKZD中) N “HSDH”:←┘
N=11=>W=****:Z=****⊿←┘ N=12=>W=****:Z=****⊿←┘ N=13=>W=****:Z=****⊿←┘ N=15=>W=****:Z=****⊿←┘ N= 4 =>W=****:Z=****⊿←┘ N= A=>W=****:Z=****⊿←┘ N= B=>W=****:Z=****⊿←┘ N= C=>W=****:Z=****⊿←┘
…………………………… (注:如有多个控制点继续添加入数据库LTKZD中)
组合程式 LTFY
Prog ”LTKZD”: Prog ”FY”
说明:
一、程序功能及原理 1、功能说明:
FY程序有两个功能,当前视点坐标X输入为零时,程式执行转点功能,即首先通过全站仪测定任意转点距置镜点距离L及置镜点与转点连线和置镜点与后视点连线的夹角P”μ”并输入计算器,即可计算出任意转点坐标;另一功能是坐标放样,即输入放样点X、Y坐标,从而计算出与置镜点距离 “QSJL=”以及全站仪归零放样拨角“ANG=”(前视方位角-后视方位角)。
凌铁大桥控制点数据库LTKZD功能是与FY程序配合后,可实现坐标放样时仅输入置镜点、后视点的编号,从而减少其数据的大量输入。 2、计算原理:
利用坐标计算和方位角的基本知识以及计算器极坐标转换功能键POL 二、使用说明 1、规定
当前视点坐标X输入为零时,程式执行转点功能 2、输入与显示说明 (1)输入部分:
XJ ? 置镜点X坐标 YJ ? 置镜点Y坐标
XH ? 后视点X坐标 YH ? 后视点Y坐标 X ? 放样点X坐标 Y ? 放样点Y坐标
L ? 实测转点距置镜点距离
P”μ” ? 实测置镜点与转点连线和置镜点与后视点连线的夹角 T ? 置镜点点号ZJDH N ? 后视点点号HSDH
11、12、13、15、4、A、B、C、D、E、F、G、H、I分别为凌铁大桥控制点点号,计算输入时按以上数字或字母输入计算器即可 (2)显示部分
HSJL=**** 后视距离(置镜点与后视点之间距离) ANG= **** 全站仪归零放样拨角
QSJL=**** 前视距离(置镜点与放样点之间距离) X= **** 转点X坐标 Y= **** 转点Y坐标
三、其它说明
1、若需要编制另一线路控制点程序,仅需新建另一数据库子程序LTKZD,新建时仅需改变上文中红色显示数据即可。
2、程式中11~15、及A~I均为控制点编号,程式开头首先给A、B赋值:A=21:B=22等,目的是为了在程式运行要求输入点号时能直接输入字母A、B、C等。
34 楼:'鸿 09-2-27 21:29 回 评:+10 分
楼主,我已经会算了,谢谢你的公式转换,不过我有点奇怪,怎么我在反算里程的时候有差距呢?
直线地段还行,就差两个厘。曲线跟圆曲线就差得多了,有的几公分,有的十几公分,楼主能给我点提示吗? 致谢
35 楼:tung 楼主 09-3-4 20:20 回 33樓loco001
源程序改編如下:有錯的地方請指正
1.正算主程序 GSZS 10→DimZ
\"X0\"?I:\"Y0\"?S:\"K0\" ?O:\"F0\"?G:\"KN\"?H:\"R0\"?P:\"RN\"?R:”Q(-Z +Y)”?Q (P-R)÷(2(H-O)PR) →D
?K:”L(-Z +Y)”?L :”ANG(YJJ)”?M
Abs(K-O) →J:Prog\"SUB1\":F-M→M:Cls ”FWJ=”:M ►DMS◢ ”X=”:X ◢
”Y=”:Y=Y◢
2. 反算主程序 GSFS 10→DimZ
?X:?Y:X→Z[2]:Y→Z[3] =
\"X0\"?I:\"Y0\"?S:\"K0\" ?O:\"F0\"?G:\"KN\"?H:\"R0\"?P:\"RN\"?R:”Q(-Z +Y)”?Q (P-R)÷(2(H-O)PR)→D
Abs((Y-S)cos(G-90)-(X-I)sin(G-90))→J 0→L:”M(YJJ)”?M Lbl 0:Prog \"SUB1\"
G-90+QJ(1÷P+JD)×180÷π→Z[5] (Z[3]-Y)cos(Z[5])-(Z[2]-X)sin(Z[5]) →L
If AbsL<1E-6:Then Goto1:Else J+L→J:Goto 0: IfEnd Lbl 1:0→L:Prog \"SUB1\":(Z[3]-Y)÷sin(F)→L O+J→K:Cls ”K=”:K◢ ”L=”:L◢
3. 正算子程序(SUB1)
0.1184634425→A:0.2393143352→B 0.2844444444→Z[4]: 0.0469100770→C 0.2307653449→E:0.5→Z[1]
G+QCJ(1÷P+CJD)×180÷π→Z[6] G+QEJ(1÷P+EJD)×180÷π→Z[7]
G+QZ[1]J(1÷P+Z[1]JD)×180÷π→Z[8] G+Q(1-E)J(1÷P+(1-E)JD)×180÷π→Z[9] G+Q(1-C)J(1÷P+(1-C)JD)×180÷π→Z[10] Acos(Z[6])→X X+Bcos(Z[7])→X X+Z[4]cos(Z[8)→X X+Bcos(Z[9])→X X+Acos(Z[10])→X I+JX→X
Asin(Z[6])→Y Y+Bsin(Z[7])→Y Z[4]sin(Z[8])→Y Y+ Bsin(Z[9])→Y Y+ Asin(Z[10])→Y S+JY→Y
X+Lcos(F)→X Y+Lsin(F)→Y
4. 曲线元要素数据库:DAT-M
If K≥O Or K<H :Then **→I:**→S:**→O: **→G: **→H: **→P: **→R:**→Q:IfEnd←┘
注意\"和”是一樣的 有錯請指正
36 楼:tung 楼主 09-3-4 20:26 回 34楼:鸿
本人計算答案與yshf提供的一樣,建議再檢查清楚,如有問題可在下址向yshf發問:
http://www.celiang.net/celiang/article_view.asp?id=380&author=yshf 37 楼:loco001 09-3-6 10:38 回 谢谢楼主!!! 要楼主QQ
38 楼:loco001 09-3-6 20:38 回 好像运行不了
39 楼:'憨憨 09-3-19 10:9 回
对照程序检查了N变,程序还是在计算器上运行不起,是不是程序本身就有问题~~~~请问楼主~~
40 楼:'憨憨 09-3-19 10:11 回
楼主你是不是发个本身就有问题的程序来娱乐我们硕~~~~ 41 楼:'2009 09-3-22 10:46 回
我也验算了N变楼主你是不是发个本身就有问题的程序来娱乐我们硕~~~~ 42 楼:'憨憨 09-3-23 20:46 回
简直是白白浪费时间哦,遇得到哦,发些烂程序在这里来炫耀,郁闷~~ 43 楼:'上级 09-3-24 21:50 回
我输入程序后,出现Math ERROR是怎么回事? 查看后没发现错误的地方啊。 请指教!
44 楼:tung 楼主 09-3-25 20:30 回 23 楼:'geergirl 09-2-23 15:42
这个程序手输线元参数后计算结果是正确的,但不是数据库,感觉不好
26 楼:'geergirl 09-2-23 20:33
输入变量运算正确,但强烈建议楼主将其改编为数据库型的最好能全线连续计算,期待楼主出新版本!!
45 楼:tung 楼主 09-3-25 20:38 回
各位輸入程序后請核對清楚,特別是轉行別忘記按EXE鍵,按EXE鍵后有↙出現的,例如 LbI 0: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=>Goto 2↙
LbI 1:Cls:?S↙
46 楼:'测量小生 09-3-26 16:8 回
请问楼主,我输入程序后X坐标相差十公分,Y坐标差了二三十公分,到底什么地方出了问题,请指正,谢了
47 楼:569795 09-3-26 22:26 回
5800的程序不是用IF和THEN编的吗?但是我从楼主的第一个程序中没有看到IF和THEN的语句啊。
48 楼:'路过 09-3-27 14:34 回
程序编进5800不能运行,反正查过很多次,还是不行。 49 楼:'测量小生 09-4-8 21:48 回 谢谢楼主,运行正确。
50 楼:'测量小生 09-4-8 21:49 回 评:+10 分 谢谢楼主,运行成功!
51 楼:liaohongshao 09-4-9 14:16 回 评:+2 分 39 楼:'憨憨
自己输不灵清,不要怪别人,我怎么用得很好啊!而且非常准确,于楼主提供的答案分毫不差,劝你还是多看看说明书吧~
52 楼:liaohongshao 09-4-9 14:31 回 评:+10 分
楼主您好,用了您的正反算程序,效果相当好,对楼主的无私奉献的精神表示敬意!
本人对5800程序也不是很了解,最近在工作上遇到超高问题,困扰许久,在论坛上找了好久也没有找到比较好的程序,近日在4850论坛找到了一款程序感觉不错,就是不知道怎样把它改为5800的程序,还望楼主能帮忙改改,在这里表示万分感谢了~如果楼主有这方面的程序,谢谢您发一份给我,liaohongshao@yahoo.cn
CASIO4850)中边桩高程连续计算及放样
程序说明:本人觉得这个程式虽然笨,但它确实很管用! 1、 可以连续计算任意桩号、任意偏距的设计高程。 2、 可以计算两种超高方式的中边桩设计高程。
3、 加了仪器视线高数据,直接显示待测点的设计前视,具备了现场放样功能。 4、 加了结构层数据,方便了各结构层高程的直接放样。 [SJG]————主程序 Defm 6:Lbi 0:S“BM+HS”(视线高):E“LGP”(路拱坡度):V“JGC”(结构层厚度): {B}:B“K”(查询桩号):Prog“SQ”:T=RAbs(P-N) ÷2:X=1:N>P=>X=-1⊿←┘
B B≤ 不设超高的路段终点桩号=> Prog“G1”: ≠>B≤设置超高的路段终点桩号=> Prog“XZ”:„„以此类推⊿(有几个≠>就有几个⊿) [SQ]—————竖曲线数据库 B≤下一竖曲线起点桩号=>H(本曲线变坡点高程):Y(变坡点桩号):R(竖曲线半径):N(前纵坡坡度):P(后纵坡坡度):≠> B≤下一竖曲线起点桩号=>H(本曲线变坡点高程):Y(变坡点桩号):R(竖曲线半径):N(前纵坡坡度):P(后纵坡坡度):„„⊿(有几个 ≠>就有几个⊿) [XZ]—————平曲线数据库 B≤=>A(直缓点桩号):D(超高坡度):L(半幅路面宽):G(圆缓点桩号):O(缓直点 桩号):Z(加宽值):F=±1(旋转方式:+1中轴旋转、-1边轴旋转):Z[5]= ±1(路线弯向:+1右转、-1左转): ≠> B≤=>A(直缓点桩号):D(超高坡度):L(半幅路面宽):G(圆缓点桩号):O(缓直点 桩号):Z(加宽值):F=±1(旋转方式:+1中轴旋转、-1边轴旋转):Z[5]= ±1(路线弯向:+1右转、-1左转):„„C=O-G: Goto 1⊿(有几个≠>就有几个⊿)←┘ Lbi 1:F=1 => Prog“ZZXZ”: ≠>F=-1 => Prog“BZXZ” ⊿ [ZZXZ]————中轴旋转横坡计算 Lbi 0:M=Abs(B-A)Z÷C: Abs(B-A) >Abs(G-A) =>A=O: ≠>A=A⊿I=Abs(B-A)(E+D) ÷C-E:I≤E=>Goto 1: ≠>I≤D=>Goto 2: ≠>Goto 3⊿⊿⊿⊿ Lbi 1:J=I:K=E: Prog“G2”: Goto 4←┘ Lbi 2:J= AbsI:K= AbsI: Prog“G2”: Goto 4←┘ Lbi 3:J=D:K=D: Prog“G2”: Goto 4←┘ Lbi 4 [BZXZ]———边轴旋转横坡计算 Lbi 0:Q=2E÷(E+D)×C:M=Abs(B-A)Z÷C: Abs(B-A) >Abs(G-A) =>A=O: ≠>A=A⊿Abs(B-A) Lbi 2: J=(Abs(B-A)-Q)(D-E) ÷(C-Q)+E:J=AbsJ:K=AbsJ: Prog“G2”: Goto 4←┘ Lbi 3: J=D:K=D: Prog“G2”: Goto 4←┘ Lbi 4 [G1]————不设超高的高程计算 W=AbsW:Z[3]=H-V-Z[2](Y-B)+Z[1]X(T-Abs(Y-B))2÷(2R)-WE:Z[6]=S-Z[3]: “SJG=”:Pause 0: “SJQS=”:Z[6] ◢ [G2]————设置超高的高程计算 J=D=>M=Z: ≠>M=M⊿←┘ Z[5]=1=> Goto 1: ≠>Z[5]=-1 => Goto 2⊿←┘ Lbi 1:W<0=>Z[4]=J: ≠>W>0=>Z[4]=-K: Goto 3⊿⊿←┘ Lbi 2: W<0=>Z[4]=-K: ≠>W>0=>Z[4]=J: Goto 3⊿⊿←┘ Lbi 3:Z[3]=H-V-Z[2](Y-B)+Z[1]X(T-Abs(Y-B))2÷(2R)-WZ[4]:Z[6]=S-Z[3]: “SJG=”:Z[3]:pause0: “SJQS=”:Z[6] ◢ 说明: 一、输入部分 选择主程序。 按[EXE]键 1、 BM+HS?--------输入仪器视线高 按[EXE]键 2、 LGP?---------输入路拱坡度 (1.5﹪输入正值 .015) 按[EXE]键 3、 JGC?----------输入结构层厚度 按[EXE]键 4、 K?-----------输入放样桩号 按[EXE]键 5、 ZBJ?------输入中边距离(左输负、右输正、中桩输0) 按[EXE]键 二、显示部分 SJG= 显示待测点的设计高程 SJQS= 显示待测点设计高程和仪器视线高的差(设计前视) 三、连续操作 重复输入部分的第4、5步,即可完成整个路段的连续计算及放样工作 53 楼:tung 楼主 09-4-9 21:22 回 52楼:liaohongshao 程序比較麻煩.復雜,轉移語句太多如要更改最好付上算例以便驗算 B≤=>A(這個有問題) 54 楼:'朱怡 09-4-9 21:43 回 你这个程序很简单,不麻烦,而且是套用别人的程序简单改的,我也用那个程序改了个5800的,比你的复杂,正反算部分比你编写的要简化很多,而且反算速度由于增加了两个加速的方法,我的反算只要3到4秒(其中计算缓和曲线200米半径的点的200米外距,反算时间只要4秒,其它反算3秒搞定).而且我的程序可以计算超高缓和段和加宽缓和段,支持多条线路,支持以中路中心轴旋转的两种超高形式的计算,还能计算分级边坡的开挖线和坡脚线,估计功能比你强大的多,而且,我的程序基本上没有用26个字母以外的增加变量.不过我也是在比较重要的部分由高人指点编写出来! 55 楼:'初学者 09-4-9 22:21 回 54 楼:'朱怡, [color=Red][U]以计算超高缓和段和加宽缓和段,支持多条线路,支持以中路中心轴旋转的两种超高形式的计算,还能计算分级边坡的开挖线和坡脚线,[/U][/color] 愿高人是否把您的程序给在下分享一下,不胜感谢.希望你能帮助我一下,让我解燃眉之急!! 邮箱:wxf_ls@126.com 56 楼:liaohongshao 09-4-10 11:21 回 评:+8 分 算例上传比较麻烦,不过以上那程序是比较麻烦,如果楼主有更好的超高加宽程序希望以上传一下,大家分享分享!呵呵~ 57 楼:hanshibiao 09-4-10 11:44 回 不知楼主能帮我看下这个程序好不,我是从4850程序改过来的。我输入多个曲线段计算坐标有的时候会对不上,有的时候能对上,请楼主帮忙看下是哪里的语句输错了,但输入单个曲就有用。请楼主帮帮忙 CASIO-fx5800 1 ZBJX(中桩坐标) If :K≤*****: Then*****→W: *****X→C: *****Y→D: *****→A: *****→B: *****→R: *****→S: fEnd K>桩号*****:其余同上 S2/(24R)-S4/(2688R3)→P: S/2-S3/240R2→Q: (R+P)tan (AbsA/2)+Q→ T:πRAbsA/180 →L: W-T→ E: E+L→ F If K≤E:Then W-K→L: C+Lcos(B-180)→X: D+Lsin(B-180)→Y: B→V:Goto 1:IfEnd If K≤E+S:Then K-E→L: L-L5/(40R2S2)→X: L3/(6RS)-L7/(336R3S3)→Y:Pol(T-X,Y): C+Icos(B-180-AbsAJ/A)→X: D+Isin(B-180- AbsAJ/A)→Y: B+90L2AbsA/AπRS→V:Goto 1:IfEnd If K≤F:Then K-E-S→L: (S/2+L)×180/(πR)→I: T-RsinI-Q→X: R(1-cosI)+P→Y: I AbsA/A+B→V:Pol(X,Y): C+Icos(B-180-JAbsA/A)→X: D+ I sin(B-180-JAbsA/A)→Y:Goto 1:IfEnd If K≤F+S:Then F+S-K→L: T-L+L5/(40R2S2)→X: L3/(6RS)-L7/(336R3S3)→Y:Pol(X,Y): C+I cos(B+A+JAbsA/A)→X: D+ I sin(B+A+JAbsA/A)→Y: B+A-90L2AbsA/(AπRS)→V:Goto 1:IfEnd If K>F+S:Then K+T-S-F→L:C+Lcos(A+B)→X: D+Lsin(A+B)→Y:A+B→V:Goto 1:IfEnd Lbl 1: X+Ucos(V-090)→X: Y+Usin(V-090)→Y 2 SQX(竖曲线) If:K>*****:Then*****→G: *****→C: *****→R: *****→E: *****→F:∆ IfEnd 其余同上 F-E→W:Abs(RW/2)→T: If K ?K:?U:Prog“ZBJX”:Prog “SQX”:X◢ Y◢ H◢ V◢ 备注: 1.(ZBJX)中,K 第二缓和曲线(直线)里程;W 下一个交点桩号;C、D 交点桩号坐标;A 交点转角(左负右正);B第二缓和曲线对应方位角;R 交点半径;S 缓和曲线长。2.(SQX)中,K 所求点里程桩号+竖曲线切线长的里程;G 变坡点里程;C 变坡点高程;R 变坡半径;E 上个变坡点的坡度;F 变坡点的坡度。 3①在ZBJX中,应注意各平曲线要素及输入的关系算子正确。 4、在HGHXP应在“ZBJX” “SQX”无误的情况下运行。 运行HGHXP 输入中桩桩号 58 楼:tung 楼主 09-4-10 20:17 回 57楼:hanshibiao X+Ucos(V-090)→X: Y+Usin(V-090)→Y 紅色地方有問題 2RW.這個或要加括號.即(2RW).AbsA這個要加括號.即Abs(A) 詳細點要對照4850p源程序才能知有沒有錯 因篇幅问题不能全部显示,请点此查看更多更全内容Goto 1: ≠>Abs(B-A)