※曲线任意里程中边桩坐标正反算5800P(无数据库)
TYQXJS(主程序名)
LbI 0:4→Dimz:Cls (扩充4个变量)
LbI 0:4→Dimz:Cls (扩充4个变量)
"1.SZ→XY"
"2.XY→SZ":"N=1 or 2"?N:Cls
"X0"?U: "Y0"?V: "S0"?O:"F0"?G: "LS"?H: "R0"?P:"RN"?R:?Q
1÷P→C:(P-R)÷(2HPR) →D:180÷π→E
N=1=>Goto 1:N=2=>Goto 2
LbI 1:Cls: "DK="?S
S=0=>Goto 0 (注:当S输入0时,程序会由LbI 0开始重新运算)
?Z:Abs(S-O)→W
Prog"SUB1":Cls
"XS=":X◢
"YS=":Y◢
"FS=":F-90 ►DMS◢
"2.XY→SZ":"N=1 or 2"?N:Cls
"X0"?U: "Y0"?V: "S0"?O:"F0"?G: "LS"?H: "R0"?P:"RN"?R:?Q
1÷P→C:(P-R)÷(2HPR) →D:180÷π→E
N=1=>Goto 1:N=2=>Goto 2
LbI 1:Cls: "DK="?S
S=0=>Goto 0 (注:当S输入0时,程序会由LbI 0开始重新运算)
?Z:Abs(S-O)→W
Prog"SUB1":Cls
"XS=":X◢
"YS=":Y◢
"FS=":F-90 ►DMS◢
LbI 2:Cls:?X
X=0=>Goto 0 (注:当X输入0時,程序由会LbI 0开始重新运算)
?Y:X→I:Y→J
Prog"SUB2":O+W→S:Cls
"S=":S◢
"Z=":Z◢
Goto 2
注:红部可以不要,亦可以要,它的作用是将S或X输入0時,程序会由开头重新运行
X=0=>Goto 0 (注:当X输入0時,程序由会LbI 0开始重新运算)
?Y:X→I:Y→J
Prog"SUB2":O+W→S:Cls
"S=":S◢
"Z=":Z◢
Goto 2
注:红部可以不要,亦可以要,它的作用是将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]
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
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
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
输入时按SHIFT---log---(-)---6
亦可直接将If Abs(Z)<1E-6写成If Abs(Z)<0.000001
注意:本程序是根据yhhf编写的4800P改写而成,以下是源程序及算例
(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
输入时按SHIFT---log---(-)---6
亦可直接将If Abs(Z)<1E-6写成If Abs(Z)<0.000001
注意:本程序是根据yhhf编写的4800P改写而成,以下是源程序及算例
大家有问题亦可在以下网址查看及向yshf发问
liang/celiang/article_view.asp?id=380&author=yshf
liang/celiang/article_view.asp?id=380&author=yshf
※曲线任意里程中边桩坐标正反算(CASIO fx-4800P计算器)程序
一、程序功能
本程序由一个主程序(TYQXJS)和两个子程——正算子程序(SUB1)、反算子程序(
SUB2)序构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线
元要素(起点坐标、起点里程、起点切线方位角、线元长度、起点曲率半径、止点曲
率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。另
外也可以将本程序中核心算法部分的两个子程序移植到其它相关的程序中,用于对曲
线任意里程中边桩坐标进行正反算。本程序也可以在CASIO fx-4500P计算器及 CASIO fx-4850P计算器上运行。
特别申明:(1). 适用于弧长小于2倍半径的各种线元坐标正反算,精度优 于1mm;
(2). 在引用该核心计算部分时,请注明来源。
二、源程序
1.正则化坐标主程序(TYQXJS)
一、程序功能
本程序由一个主程序(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+
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) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
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坐标
(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)
DK=? 正算时所求点的里程
S0 ?线元起点里程
F0 ?线元起点切线方位角
LS ?线元长度
R0 ?线元起点曲率半径
RN ?线元止点曲率半径
Q ? 线元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)
DK=? 正算时所求点的里程
Z ?正算时所求点距中线的边距(左侧取负,值右侧取正值,在中线上取零)
X ?反算时所求点的X坐标
Y ?反算时所求点的Y坐标
显示部分:
XS=××× 正算时,计算得出的所求点的X坐标
YS=××× 正算时,计算得出的所求点的Y坐标
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=××× 反算时,计算得出的所求点的里程
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=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
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
谢谢发贴:+22 分 【测量空间】liang[0
X=19736.4769 Y=28722.3564 计算得 S=939.9999862 Z=- 0.000027710
X=19733.4730 Y=28722.5317 计算得 S=940.0000238 Z= 3.00898694
谢谢发贴:+22 分 【测量空间】liang[0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论