输入图纸中的整个标段交点要素,输入桩号及距中桩距离正算本标段任意点坐标,及极坐标放样的方位角及距离;由输入大概桩号及实测坐标,反算准确桩号及距中桩距离。(绿色为程序名,蓝色为输入计算器里的内容)
- 主程序
程序名:1XY-KM
LbI 0:7→DimZ:Norm 2:1→A:"A:X,Y=1,KM,D=2"?A:
A=1=>Goto 1:A=2=>Goto 2:LbI 1:Z[4]→K:Z[5]→L:“XZ”?K:”YZ”?L:K→Z[4]:L→Z[5]:LbI A:Prog"QX":90→B:"PJ"?B:B→Z[1]:LbI B:"KM"?Z:Z= -1=>Goto 0:Z=-2=>Goto A: Prog"X1":?D: Prog “Z”:I+D×COS(Z[2]+Z[1]→X: J+D×Sin(Z[2]+Z[1]→Y: Fix 3:" X=":Locate 6,4,X:"Y=":Locate 6,4,Y:Prog"JS":Goto B:
LbI 2:Prog"QX":"KM"?Z:LbI C: Prog"X1": "XO"?X:X=-1=>Goto 0:X=-2=>Goto 2: "Y0"?Y:Prog "ZX": Fix 3:" KM=":Locate 6,4,Z:" D=":Locate 6,4,D:Goto C
- 2. 交点法正算子程序(Z)
程序名:Z
H2÷R÷24-H∧(4)÷2688÷R∧(3)→A:H÷2-H∧(3)÷240÷R2→B:((H2-N2)÷24÷R÷Sin(Abs(P))-((H∧(4)-N∧(4))÷2688÷R∧(3))÷Sin(Abs(P→E:(R+A)tan(Abs(P)÷2)+B-E→T:P÷Abs(P→W:0→M:H→C: (R+N2÷R÷24-N∧(4)÷2688÷R∧(3))tan(Abs(P)÷2)+N÷2-N∧(3)÷240÷R2+E→Z[6]: O-T+ΠR×Abs(P)÷180+H÷2-N÷2→Z[7]:If Z≤O-T:Then Z-O→S:G→Z[2]:Goto 1: IfEnd: If Z≤O-T+H:Then Z-O+T→S:Prog “HX”:G+WK→Z[2]:A-T→A:G→E:Goto 2:IfEnd:If Z≤Z[7]: Then 180(Z-O+T-0.5H)÷R÷π→S : A+R(1-Cos(S))→B:H÷2-H∧(3) ÷240÷R2+Rsin(S)→A:R→M:G+WS→Z[2]: A-T→A:G→E :Goto 2: IfEnd:
If Z≤Z[7]+N:Then Z[7]+N-Z→S:Z[6]→T :N→H:Prog “HX”:G+P→E:E-WK→Z[2]:T-A→A:C→H:Goto 2:IfEnd:
Z-Z[7]-N+Z[6]→S:G+P→Z[2]: LbI 1:U+Scos(Z[2])→I:V+Ssin(Z[2]→J: Return:LbI 2:U+Acos(E)-WBsin(E→I:V+ASin(E)+WBcos(E→J
- 3. 交点法缓和段子程序(HX)
程序名:HX
S-S∧(5)÷40÷R2÷H2+S∧(9)÷3456÷R∧(4) ÷H∧(4→A:S∧(3) ÷6÷R÷H-S∧(7)÷336÷R∧(3)÷H∧(3)+S∧(11)÷42240÷R∧(5) ÷H∧(5→B:90S2÷Π÷R÷H→K:RH÷S→M
- 4. 交点法反算子程序(ZX)
程序名:ZX
0→D:Do:Z+D→Z:Prog“Z”:Pol(X-I,Y-J+.000000001:J-Z[2]→J:Isin(J→S:Icos(J→D: If M≠0:Then Pol(M-WS,D:JMΠ÷180→D:IfEnd: LpWhile Abs(D)>0.001:Z+D→Z:S→D
5.线路选择子程序(线路选择输0时。则输曲线参数(QX)
程序名:QX
1→A:”QX:?=0,X1=1,X2=2”?A:A→Z[3]:
If A=0:Then ”JDKM”?O:”XJ”?U:”YJ”?V:”FW”?G:”LS1”?H:“LS2”?N:“JDZJ”?P:?R:IfEnd
6.坐标计算参数矩阵调出子程序(F)
程序名:F
Mat F[1,1]→O: Mat F[1,2]→U: Mat F[1,3]→V: Mat F[1,4]→G: Mat F[1,5]→H: Mat F[1,6]→N: Mat F[1,7]→P: Mat F[1,8]→R
7:极坐放样计算程序(计算放样点至置仪点方位角及距离)
程序名:JS
Z[4]→K:Z[5]→L:Pol(X-K, Y-L+.0000000001): J<0=>J+360→J: Int(J)+0.01Int(60Frac(J))+0.006Frac(60Frac(J)) →J: Fix 4:” FWJ=”: Locate 6,4,J:
Fix 3:” S=”:Locate 6,4,I◢
8.数据子程序(根据自己标段设计数据修改红色部分)
程序名:X1(坐标计算要素程序,暂例子只给二条线路参数)
Z[3]=0=>Return:Z[3]=1=>Goto 1:Z[3]=2=>Goto 2:
LbI 1:If Z≤122269.856:Then [[121656.952, 2603848.019, 508351.147, 98°53′22.6″,660,300, 41°47′44.1″, 1415.097]]→Mat F: Prog”F”: Return: IfEnd:
If Z≤125115.9:Then [[123984.982, 2601974.464, 509885.441, 140°41′06.8″,700,400, -39°31′43.7″,2800]]→Mat F: Prog”F”: Return:IfEnd:
LbI 2:If Z≤396.166:Then [[213.698, 2600569.493, 514256.323, 238°49′17.1″,107.584,120.474, 64°39′40″, 250]]→Mat F: Prog”F”: Return: IfEnd:
说明:If Z《交点HZ点桩号(或者直线段桩号):Then[[交点桩号,交点X坐标,交点Y坐标,前交点至止交点方位角,交点前段缓和曲线长度,交点后段缓和曲线长度,交点转角,圆半径]] →Mat F: Prog”F”: Return: IfEnd:
注:转角分正负,左偏为负,右偏为正.加粗O为子母..Z[2]值为所计算点切线方位角。
输入部分:
1、"A:X,Y=1,KM,D=2"? 选择正反算,输1为正算,输2为反算;
2、XZ? YZ?输入置仪点X、Y坐标
3、”QX:?=0,X1=1,X2=2”? 选择手工输入参数及调入参数,输0则手工输入交点线元参数,输1则调入子程序X1中第一条线路,输入计算第二条线路。
4、PJ? 路线方向中线向右夹角,默认为90度;
5、JDKM?XJ?YJY?FW?LS1?LS2?JDZJ?R?分别输入:交点桩号,交点X坐标,交点Y坐标,前交点至止交点方位角,交点前段缓和曲线长度,交点后段缓和曲线长度,交点转角,圆半径
6、KM? 输入计算段任意点桩号(主程序中输-1,返回选择正反算,输-2,返回选择输入选择线路或输入参数.
7、D? 距中桩距离,左负,右正,中桩输0。
输出部分:
1、X=*** 正算时,计算得出的所求点的X坐标
2、 Y=*** 正算时,计算得出的所求点的Y坐标
3、FWJ=*** 正算时,计算得出的所求点的至置仪点方位角(显示125.3258即是125度32分58秒)
4、S=*** 正算时,计算得出的所求点的至置仪点距离
5、KM=*** 反算时,计算得出的所求点的里程
6、D=*** 反算时,计算得出的所求点的边距
附X1子程序中数据的设计图纸。(红色部分)
桩 号 | 坐 标 | |
N (X) | E (Y) | |
EK0+000 | 2600680.126 | 514439.154 |
EK0+020 | 2600669.814 | 514422.018 |
EK0+040 | 2600659.759 | 514404.730 |
EK0+060 | 2600650.222 | 514387.151 |
EK0+080 | 2600641.480 | 514369.166 |
EK0+100 | 2600633.822 | 514350.694 |
EK0+107.584 | 2600631.266 | 514343.554 |
EK0+120 | 2600627.548 | 514331.709 |
EK0+140 | 2600622.808 | 514312.284 |
EK0+160 | 2600619.636 | 514292.543 |
EK0+180 | 2600618.051 | 514272.611 |
EK0+200 | 2600618.064 | 514252.616 |
EK0+220 | 2600619.675 | 514232.687 |
EK0+240 | 2600622.874 | 514212.949 |
EK0+260 | 2600627.639 | 514193.531 |
EK0+275.692 | 2600632.456 | 514178.599 |
EK0+280 | 2600633.941 | 514174.555 |
EK0+300 | 2600641.667 | 514156.112 |
EK0+320 | 2600650.555 | 514138.199 |
EK0+340 | 2600660.338 | 514120.757 |
EK0+360 | 2600670.765 | 514103.691 |
EK0+380 | 2600681.599 | 514086.879 |
EK0+396.166 | 2600690.498 | 514073.383 |
|