发布于:2010-09-13 10:36:13
来自:施工技术/工程测量
[复制转发]
1. 主程序(TYQXJS)
Lbl 4:"1.SZ => XY":"2.XY => SZ":?N:?S:Prog“SUB0”↙
1÷P→C: (P-R)÷(2HPR) →D:180÷∏→E:N=1 => Goto1: Goto2:↙
Lbl 1:? Z: Abs(S-O) →W:Prog "SUB1": "XS=":X◢
"YS=":Y◢
F-90→F: “FS=”:F▲DMS◢
Goto4↙
Lbl 2:?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:
((Y-V)cosT-(X-U)sinT) →W
Abs(W) →W:0→Z
Lbl 4:Prog "SUB1":
T+QEW(C+WD) →L
(J-Y)cos(L)-(I-X)sin(L)→Z
If Abs(Z)<1E-6(或者0.000001):Then 0→Z: Prog "SUB1"←┘
Else W+Z→W:Goto 4:IfEnd
SUB0 数据库子程序
Goto1↙ 同时保存多个曲线时的指针
Lbl 1:IF S<34923.267(线元终点里程):Then 339°51°58.7°(线元起点方位角)→G:34800(线元起点里程)→O:8494.88(线元起点X)→U:375.02(线元起点Y)→V: 1E-6(线元起点曲率半径)→P: 1E-6(线元终点曲率半径)→R: 123.267(线元起点至终点长度)→H:0或1、-1→Q:Return:IfEnd↙
Goto2
Lbl 2:IF S<34978.267(线元终点里程):Then 339°51°58.7°(线元起点方位角)→G:34923.267(线元起点里程)→O:8610.614(线元起点X)→U:332.59(线元起点Y)→V: 1E-6(线元起点曲率半径)→P: 750(线元终点曲率半径)→R: 55(线元起点至终点长度)→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=××× 反算时,计算得出的所求点的边距
算例:
K34+980.000 X: 2798664.1267 Y: 509313.7570
L 6.0 m X: 2798662.2825 Y: 509308.0474
R 6.0 m X: 2798665.9709 Y: 509319.4666
本程序计算出结果:
K34+980.000 X: 2798663.8800 Y: 509313.0620
L 6.0 m X: 2798661.8150 Y: 509307.4290
R 6.0 m X: 2798665.9450 Y: 5093198.965
问题在哪?
申明:内容来自用户上传,著作权归原作者所有,如涉及侵权问题,请点击此处联系,我们将及时处理!
全部回复(1 )
只看楼主 我来说两句 抢板凳