fx-5800P程序
直线段中边桩坐标计算程序(PM10-9)
(1) 计算原理
在图 10-11 中,已知路线直线段起点 A的
桩号 AZ 及其平面坐标( Ax , Ay ),端点的已知
数据可以是 B点的平面坐标( Bx , By ),也可
以是 AB的方位角 ABα 与平距 ABD 。
设直线上任意点 j的桩号为 jZ ,则 j点的
中桩坐标为
⎭⎬
⎫
−+=
−+=
ABAjAj
ABAjAj
ZZyy
ZZxx
α
α
sin)(
cos)(
(10-34)
左边桩坐标为
⎭⎬
⎫
°−+=
°−+=
)90sin(
)90cos(
ABLjjL
ABLjjL
wyy
wxx
α
α
(10-35)
右边桩坐标为
⎭⎬
⎫
°++=
°++=
)90sin(
)90cos(
ABRjjR
ABRjjR
wyy
wxx
α
α
(10-36)
式中, Lw 为路线左半幅宽, Rw 为路线右半幅宽。
(2) 程序 PM10-9,占用内存 746字节。
"LINE COORDINATE PM10-9" 显示直线段坐标计算标题
Deg:Fix 3 基本设置
4 DimZ 定义额外变量用于暂存左、右边桩点坐标
"A MILEAGE PEG(m)="?Z 输入以 m为单位的 A点桩号
"XA(m)="?A 输入起点 A的 x坐标
"YA(m)="?B 输入起点 A的 y坐标
"XB(m), 0 To BEAR A B(Deg)="?C 输入已知点 A的 x坐标或输入≤0的数值
If C>0:Then "YB(m)="?D C>0时为输入 B点 y坐标
Pol(C-A,D-B):Cls:I L 计算 A→B的方位角与平距
J<0 J+360 J:J R
"DIST A B(m)=":L 显示 A→B的水平距离
"BEAR A B(DMS)=":R 显示 A→B的方位角
Else "BEAR A B(Deg)="?R C<0时为输入 A→B的方位角
"DIST A B(m)="?L 输入 A→B的平距
0 D:IfEnd
1 K 计数变量计数
ClrStat:FreqOn 清除统计串列 List X,List Y,List Freq,打开频度串列
1 K:Z List X[K] 存储 A点桩号
"A PEG(m)=":List X[K] 显示 A点桩号
Prog "SUB10-91" 调子程序计算 A点中边桩点坐标
If L>0:Then K+1 K
Z+L List X[K] 计算 B点桩号
"B PEG(m)=":List X[K] 显示 B点桩号
Prog "SUB10-91" 调子程序计算 B点中边桩点坐标
IfEnd
图 10-11 直线段中边桩坐标计算原理
user
新建图章
fx-5800P程序
"INT DIST(m)="?O:O=0 Goto 1 输入整桩间距
"ONLY CALC +PEG(1)="? G 输入 1为只计算加桩点的坐标
G=1 Goto 1
K+1 K:Int(Z÷O)O+O List X[K] 计算并存储从 A点开始的第一个整桩号
"INT PEG(m)=":List X[K] 显示整桩号
Prog "SUB10-91" 调子程序计算中边桩点坐标
Do
K+1 K: List X[K-1]+O List X[K] 计算并存储整桩号
"INT PEG(m)=":List X[K] 显示整桩号
Prog "SUB10-91" 调子程序计算并显示坐标
If C>0:Then If List X[K]+O-Z L:Then 1 Y:Else 0 Y:IfEnd
整桩号<直线端点桩号时循环,否则结束
Else "CONTINUE(1),Stop(Else)"?Y:IfEnd 无端点坐标时每次询问是否继续计算
LpWhile Y=1 没计算到 YZ点时继续循环
Lbl 1
Do
"+PEG(m),<0 To END="? H 输入加桩号
If H<0:Then Goto 2:IfEnd 输入任意负数结束程序
K+1 K 计数变量计数
H List X[K] 存储加桩号到统计串列
"+PEG(m)=":List X[K] 显示加桩号
Prog "SUB10-91" 调子程序计算加桩点中边桩坐标
LpWhile H>0
Lbl 2:"PM10-9 END
(3) 子程序——SUB10-91,占用内存 304字节。
根据存储在 List X[K]中的逐桩点桩号,计算直线段中桩及其左、右边桩点坐标。
A+(List X[K]-Z)cos (R) List Y[K] 保存中桩点坐标到串列
B+(List X[K]-Z)sin (R) List Freq[K]
"X(m)=":List Y[K]
"Y(m)=":List Freq[K]
"WL(m),0 NO="?E
If E>0:Then List Y[K]+Ecos(R-90) Z[1] 计算左边桩坐标
List Freq[K]+Esin(R-90) Z[2]
"XL(m)=":Z[1] 显示左边桩坐标
"YL(m)=":Z[2]
IfEnd
"WR(m),0 NO="?F
If F>0:Then List Y[K]+Fcos(R+90) Z[3] 计算右边桩坐标
List Freq[K]+Fsin(R+90) Z[4]
"XR(m)=":Z[3] 显示右边桩坐标
"YR(m)=":Z[4]
IfEnd
Return
(4) 程序说明
1) 程序要求必须输入的起点 A的桩号与平面坐标,
提示
春节期间物业温馨提示小区春节期间温馨提示物业小区春节温馨提示春节物业温馨提示物业春节期间温馨提示
输入端点 B的 x坐标时,如果直接输
入B点的平面坐标,则程序自动计算并显示直线 AB的方位角与平距;如果输入负数,则程序继续
提示用户输入直线 AB的方位角与平距,当未知平距时,可以输入 0。
2) 程序使用用户输入的整桩间距计算逐桩点坐标,还可以计算用户输入桩号的加桩点坐标,
user
新建图章
fx-5800P程序
加桩点桩号可以为任意值,也即,加桩点可以位于起点 A之前或之后。
3) 程序只将中桩点桩号与平面坐标存储在统计串列 List X,List Y,List Freq中,边桩点坐
标只供显示。程序运行完成后,可按 键进入双变量统计串列查看中桩点桩号与平面坐标。
表 10-12为路线直线段测量坐标计算案例, AZ =K21+372.446, Ax =1874.132, Ay =4975.213,
Bx =1316.429, By =5139.789,路面左半幅宽 =Lw 25m,右半幅宽 =Rw 20m,整桩间距取 50m。
表 10-12 使用程序 PM10-9计算直线段任意点中边桩坐标案例
序 桩号 x (m) y (m) Lx (m) Ly (m) Ry (m) Ry (m) 中间结果
1 A K21+372.446 1874.132 4975.213 1881.208 4999.191 1868.471 4956.031 ABD =581.479m
2 B K21+953.925 1316.429 5139.789 1323.505 5163.767 1310.768 5120.607 ABα =
3 K21+400 1847.705 4983.012 1854.780 5006.989 1842.044 4963.829 163°33′31.95″
4 K21+450 1799.749 4997.163 1806.825 5021.141 1794.089 4977.981
5 K21+500 1751.794 5011.315 1758.869 5035.292 1746.133 4992.132
6 K21+550 1703.838 5025.466 1710.914 5049.444 1698.177 5006.284
7 K21+600 1655.882 5039.618 1662.958 5063.595 1650.222 5020.435
8 K21+650 1607.927 5053.769 1615.003 5077.747 1602.266 5034.587
9 K21+700 1559.971 5067.921 1567.047 5091.898 1554.311 5048.738
10 K21+750 1512.016 5082.072 1519.092 5106.050 1506.355 5062.890
11 K21+800 1464.060 5096.224 1471.136 5120.201 1458.400 5077.041
12 K21+850 1416.105 5110.375 1423.180 5134.353 1410.444 5091.193
13 K21+900 1368.149 5124.527 1375.225 5148.504 1362.489 5105.344
14 K21+950 1320.194 5138.678 1327.269 5162.656 1314.533 5119.496
15 K21+300 1943.616 4954.709 1950.692 4978.686 1937.955 4935.526
16 K22+000 1272.238 5152.830 1279.314 5176.807 1266.577 5133.647
执行程序 PM10-9,计算表 10-12数据的屏幕提示与用户操作过程如下:
屏幕提示 按键 说明
LINE COORDINATE PM10-9 显示程序标题
A MILEAGE PEG(m)=? 21372.446 输入以 m为单位的起点桩号
XA(m)=? 1874.132 输入起点 A的测量坐标
YA(m)=? 4975.213
XB(m), 0 To BEAR A B(Deg)=? 1316.429 输入端点 B的测量坐标
YB(m)=? 5139.789
DIST A B(m)=581.479 显示直线 AB平距
BEAR A B(DMS)=163°33′31.95″ 显示直线 AB方位角
A PEG(m)=21372.446 显示起点 A的桩号
X(m)=1874.132 显示起点 A的平面坐标
Y(m)=4975.213
WL(m),0 NO=? 25 输入左半幅路宽
XL(m)=1881.208 显示 A点左边桩坐标
YL(m)=4999.191
WR(m),0 NO=? 20 输入右半幅路宽
XR(m)=1868.471 显示 A点右边桩坐标
YR(m)=4956.031
B PEG(m)=21953.925 显示端点 B的桩号
X(m)=1316.429 显示端点 B的平面坐标
Y(m)=5139.789
WL(m),0 NO=?25 按 键使用原左半幅路宽
XL(m)=1323.505 显示 B点左边桩坐标
YL(m)=5163.767
WR(m),0 NO=?20 按 键使用原右半幅路宽
XR(m)=1310.768 显示 B点右边桩坐标
YR(m)=5120.607
INT DIST(m)=? 50 输入整桩间距
ONLY CALC +PEG(1)? 0 先计算逐桩点再计算加桩点
INT PEG(m)=21400 显示 A点开始的第 1个整桩号
user
新建图章
fx-5800P程序
X(m)=1847.705 显示 1点的中桩坐标
Y(m)=4983.012
WL(m),0 NO=?25 按 键使用原左半幅路宽
XL(m)=1854.780 显示 1点左边桩坐标
YL(m)=5006.989
WR(m),0 NO=?20 按 键使用原右半幅路宽
XR(m)=1842.044 显示 1点右边桩坐标
YR(m)=4963.829
INT PEG(m)=21450 显示 A点开始的第 2个整桩号
X(m)=1799.749 显示 2点的中桩坐标
Y(m)=4997.163
WL(m),0 NO=?25 按 键使用原左半幅路宽
XL(m)=1806.825 显示 2点左边桩坐标
YL(m)=5021.141
WR(m),0 NO=?20 按 键使用原右半幅路宽
XR(m)=1794.089 显示 2点右边桩坐标
YR(m)=4977.981
…… …… ……
INT PEG(m)=21950 显示 ZH点开始的第 15个整桩号
X(m)=1320.194 显示 15点的中桩坐标
Y(m)=5138.678
WL(m),0 NO=?25 按 键使用原左半幅路宽
XL(m)=1327.269 显示 15点左边桩坐标
YL(m)=5162.656
WR(m),0 NO=?20 按 键使用原右半幅路宽
XR(m)=1314.533 显示 15点右边桩坐标
YR(m)=5119.496
+PEG(m),<0 To END=? 21300 输入加桩号
X(m)=1943.616 显示加桩点的中桩坐标
Y(m)=4954.709
WL(m),0 NO=?25 按 键使用原左半幅路宽
XL(m)=1950.692 显示加桩点左边桩坐标
YL(m)=4978.686
WR(m),0 NO=?20 按 键使用原右半幅路宽
XR(m)=1973.955 显示加桩点右边桩坐标
YR(m)=4935.526
+PEG(m),<0 To END=? 22000 输入加桩号
X(m)=1272.238 显示加桩点的中桩坐标
Y(m)=5152.830
WL(m),0 NO=?25 按 键使用原左半幅路宽
XL(m)=1279.314 显示加桩点左边桩坐标
YL(m)=5176.807
WR(m),0 NO=?20 按 键使用原右半幅路宽
XR(m)=1266.577 显示加桩点右边桩坐标
YR(m)=5133.647
+PEG(m),<0 To END=? -1 输入 0或负数结束程序运行
PM10-9 END 程序运行结束显示
A,B点的桩号分别存储在统计串列 List X[1]与 List X[2]中,x坐标分别存储在统计串列 List
Y[1]与 List Y[2]中, y坐标分别存储在统计串列 List Freq[1]与 List Freq[2]中。逐桩点与加桩点
的桩号及中桩坐标从统计串列的第 3行开始顺序往下存储,左、右边桩坐标只显示,没有保存。可
按 (REG)键进入双变量统计与回归模式查看桩号及中桩坐标。
user
新建图章
Text1:
Text2:
Text3:
Text4: