资源描述
交点法坐标计算 JDFZBJS
第一种:单一交点法计算任意里程位的坐标。
程序如下:
待求段的交点X坐标→V:
待求段的交点Y坐标→W:
前一段的交点X坐标→M:
前一段的交点Y坐标→N:
直缓点ZH的里程→Q:
缓直点HZ的里程→Z:
待求段圆曲线半径→R:
待求段缓和曲线长度→U:
待求段的切线长度→T:
待求段转向方向(左转取-1,右转取+1)→P:
待求段转向偏角→A:
10→DimZ:
Cls:
“KM=”?L: 待求点里程
“L-1,R+1”?K: 待求点位于前进方向左侧为-1,右侧为+1
“PJ=”?S: 待求点到线路设计中心的平距
Lbl 0:
Pol(V-M,W-N):
J→Z[1]:
Rec(T,Z[1]+180):
V+I→Z[2]:
W+J→Z[3]:
Lbl 1:
If L≤Q:
Then Rec(Q-L,Z[1]+180):
Else Goto 2:
IfEnd:
Z[2]+I→Z[4]:
Z[3]+J→Z[5]:
If K=1:
Then Rec(S,Z[1]+90):
Else Rec(S,Z[1]+270):
IfEnd:
Goto 6:
Lbl 2:
Abs(Q-L)→Z[6]:
If U≥Z[6]:
Then Pol(Z[6]-Z[6]ˆ(5)÷(40R2U2)+Z[6]^(9)÷(3456(RU)^(4)),Z[6]^(3)÷(6RU)-Z[6]^(7)÷(336(RU)^(3))+Z[6]^(11)÷(42240(RU)^(5))):
Else Goto 3:
IfEnd:
J→Z[7]:
Rec(I,Z[1]+Z[7]P):
Z[2]+I→Z[4]:
Z[3]+J→Z[5]:
Z[1]+Z[7]P+60PZ[6]2÷(RUπ)+90→Z[10]:
If K=1:
Then Rec(S,Z[10]):
Else Rec(S,Z[10]+180):
IfEnd:
Goto 6:
Lbl 3:
Abs(Q-L)→Z[6]:
If L≤Z-U:
Then Pol(Rsin(90(2Z[6]-U)÷(Rπ))+U-Rsin(90U÷(Rπ))-U^(3)÷(40R2),R-Rcos(90(2Z[6]-U)÷(Rπ))+U2÷(24R)):
Else Goto 4:
IfEnd:
J→Z[7]:
Rec(I,Z[1]+Z[7]P):
Z[2]+I→Z[4]:
Z[3]+J→Z[5]:
Z[1]+90P(2Z[6]-U)÷(Rπ)+90→Z[10]:
If K=1:
Then Rec(S,Z[10]):
Else Rec(S,Z[10]+180):
IfEnd:
Goto 6:
Lbl 4:
If L≥Z-U And L≤Z:
Then Z[1]+AP→Z[1]:
Else Goto 5:
IfEnd:
Rec(T,Z[1]):
V+I→Z[2]:
W+J→Z[3]:
Z→Q:
-P→P:
-K→K:
Z[1]+180→Z[1]:
Goto 2:
Lbl 5:
If L≥Z:
Then Z[1]+AP→Z[1]:
IfEnd:
Rec(T,Z[1]):
V+I→Z[2]:
W+J→Z[3]:
Rec(L-Z,Z[1]):
Z[2]+I→Z[4]:
Z[3]+J→Z[5]:
If K=1:
Then Rec(S,Z[1]+90):
Else Rec(S,Z[1]+270):
IfEnd:
Goto 6:
Lbi 6:
Z[4]+I→Z[8]:
Z[5]+J→Z[9]:
Cls:
Fix 3:
“Xp=”: 计算的X坐标
“Yp=”: 计算的Y坐标
Locate 7,1,Z[8]: X坐标显示在第一行
Locate 7,2,Z[9]◢ Y坐标显示在第二行
Stop
注解:
在本程序中考虑了ZH点前和HZ点后的直线情况。程序最后用Stop结束一个里程位的计算,如果要计算的点多,可以在程序最前面(即程序开始处)加个语句行Lbl A:,在程序最后面将Stop改写成Goto A。但这样在停止计算时转出来较麻烦。
第二种:单一交点法计算任意里程位的坐标。
主程序 JD
24→DimZ:
Cls:
交点里程桩号→K:
交点X坐标→X:
交点Y坐标→Y:
第一缓和曲线长度→B:
第二缓和曲线长度→C:
圆曲线半径→R:
ZH点方位角→M:
偏角(带符号)→O:
M+O→N: HZ点方位角
Prog“JDA”
Cls:
“T1=”: 第一切线长度
“T2=”: 第二切线长度
“L=”: 曲线总长度
“LY=”: 圆曲线长度
Locate 9,1,S:
Locate 9,2,T:
Locate 9,3,L:
Locate 9,4,Q◢
Cls:
“E=”: 外距
“K(ZH)=”: 直缓点里程
Locate 11,1,E:
Locate 8,2,Z[1] ◢
Cls:
“K(HY)=”: 缓圆点里程
“K(QZ)=”: 曲中点里程
“K(YH)=”: 圆缓点里程
“K(HZ)=”: 缓直点里程
Locate 8,1,Z[2]:
Locate 8,2,Z[3]:
Locate 8,3,Z[4]:
Locate 8,4,Z[5] ◢
Lbl 0:
“JSLC”?P: 待求点里程
“(-L,Z=0,+R)”?D: 边桩偏移值(左用负,右用正,中用0)
Prog“JDB”
If D<0:
Then Cls:
“X(L)=”: 左边桩X坐标
“Y(L)=”: 左边桩Y坐标
Locate 6,1,F:
Locate 7,2,G◢
Goto 0:
IfEnd
If D=0:
Then Cls:
“X(Z)=”: 中桩X坐标
“Y(Z)=”: 中桩Y坐标
Locate 6,1,F:
Locate 7,2,G◢
“QXFWJ(Z)=”:
Z►DMS◢
Goto 0:
IfEnd
If D>0:
Then Cls:
“X(R)=”: 右边桩X坐标
“Y(R)=”: 右边桩Y坐标
Locate 6,1,F:
Locate 7,2,G◢
Goto 0:
IfEnd
子程序——JDA
If O<0: 负为曲线左转
Then -1→W:
Else 1→W:
IfEnd
WO→A:
B2/24/R-B^4/2688/R^3→Z[6]:
C2/24/R-C^4/2688/R^3→Z[7]:
B/2-B^3/240/R2→Z[8]:
C/2-C^3/240/R2→Z[9]:
Z[8]+((R+Z[7]-(R+Z[6])cos(A))/sin(A))→S:
Z[9]+((R+Z[6]-(R+Z[7])cos(A))/sin(A))→T:
RAπ/180+(B+C)/2→L:
RAπ/180-(B+C)/2→Q:
(R+(Z[6]+Z[7])/2/cos(A/2)-R→E:
K-S→Z[1]:
Z[1]+B→Z[2]:
Z[2]+Q/2→Z[3]:
Z[1]+L-C→Z[4]:
Z[4]+C→Z[5]
子程序——JDB
X-Scos(M)→Z[19]:
Y-Ssin(M)→Z[20]:
X+Tcos(N)→Z[21]:
Y+Tsin(N)→Z[22]:
If P>Z[1]:
Then Goto 1:
IfEnd
Z[1]-P→L:
X-(S+L)cos(M)+Dcos(Z+90)→F:
Y-(S+L)sin(M)+Dsin(Z+90)→G:
M→Z:
Goto 5
Lbl 1:
If P>Z[2]:
Then Goto 2:
IfEnd
P-Z[1]→L:
L→Z[12]:
B→Z[13]:
Prog“JDC”:
Z[19]+Z[14]cos(M)-WZ[15]sin(M)+Dcos(Z+90)→F:
Z[20]+Z[14]sin(M)+WZ[15]cos(M)+Dsin(Z+90)→G:
M+90WL2/(BRπ)→Z:
Goto 5
Lbl 2:
If P>Z[4]:
Then Goto 3:
IfEnd
P-Z[1]→L:
90(2L-B)/R/π→Z[11]:
Rsin(Z[11])+Z[8]→Z[14]:
R(1-cos(Z[11]))+Z[6]→Z[15]:
Z[19]+Z[14]cos(M)-WZ[15]sin(M)+Dcos(Z+90)→F:
Z[20]+Z[14]sin(M)+WZ[15]cos(M)+Dsin(Z+90)→G:
M+WZ[11]→Z:
Goto 5
Lbl 3:
If P>Z[5]:
Then Goto 4:
IfEnd
Z[5]-P→L:
L→Z[12]:
C→Z[13]:
Prog “JDC”:
Z[21]-Z[14]cos(N)-WZ[15]sin(N)+Dcos(Z+90)→F:
Z[22]-Z[14]sin(N)+WZ[15]cos(N)+Dsin(Z+90)→G:
N-90WL2/(CRπ)→Z:
Goto 5
Lbl 4:
P-Z[5]→L:
X+(T+L)cos(N)+Dcos(Z+90)→F:
Y+(T+L)sin(N)+Dsin(Z+90)→G:
N→Z:
Goto 5
Lbl 5:
360Frac((Z+360)/360)→Z
子程序——JDC
If Z[12]=0:
Then 0→Z[14]:
0→Z[15]:
Else
Z[12]-Z[12]^5/40/(RZ[13])2+Z[12]^9/3456/(RZ[13])^4→Z[14]:
Z[12]^3/6/(RZ[13])-Z[12]^7/336/(RZ[13])^3
+Z[12]^11/42240/(RZ[13])^5→Z[15]:
IfEnd
注意: 本程序在计算边桩前,必须先算中桩后才能算边桩,不能直接先算边桩,否则结果会出错误值!
展开阅读全文