|
楼主 |
发表于 2011-6-1 22:24:01
|
显示全部楼层
本程序是5800转FX-CG20计算程序
希望广大测友
勇于提出修改意见
错误或者转换错误修改征集:
修改格式
保留原程序→修改的程序加上[ ]
FX-CG20(交点法与交点法)融合计算程序
1主程序名:ZBZFS(功能:进入计算主程序)(◢, ←┘, → ►DMS ◢)
File1
70→Dim List1
"1.JD ZFS 2. ZD ZFS"? → I: I→List1 [61]: "1.CS JS 2. JS"? → I←┘
If I=1: Then Goto1: Else Goto2:IfEnd←┘
LbI 1 :If List1[61]=1: Then Prog"JDYS":Else ClrText:"K0="? →A:"KN="? →L :"X0="? →U :"Y0="? →V :"F0="? →W :"R0="? →P :"RN="? →Q:"ZX=:-1,+1,0"? →G:IfEnd←┘
LbI 2 :Prog"JS"
2子程序名:JS(功能:选择正算或反算模式)
ClrText:"XC="? →H:"YC="? →Z←┘
ClrText:"1.ZS 2.FS"? → I: I=2=>Goto 3←┘
LbI 1 : ClrText: If List1[61]=1: Then"JD ZS KX+XXX"? →K :Prog"4": Else "ZD ZS KX+XXX"? →K :IfEnd←┘
LbI 2: ClrText:90→B: ClrText:"RJ Or 0 To K"? →B:B=0 =>Goto 1:"Z"? →T←┘
Prog "XY-A"←┘
X+Tcos(M+B)→X←┘
Y+Tsin(M+B)→Y←┘
360Frac((M+360)÷360→M←┘
Pol(X-H,Y-Z : 360Frac((J+360)÷360→J←┘
2→O: Prog "XY-B":Goto 2←┘
LbI 3 : ClrText: If List1[61]=1: Then"JD FS KN+"? →K:"X="? →C:"Y="? →D:Prog"4":Else ClrText: " ZD FS":"X="? →C:"Y="? →D:IfEnd←┘
LbI 4 :Prog "XY-A"←┘
(D-Y)sin(M)+(C-X)cos(M)→H←┘
If Abs(H)>X10-3 :Then K+H→K:Goto 4:IfEnd←┘
(D-Y)÷cos(M)→T←┘
3→O: Prog "XY-B":Goto 3←┘
3子程序名: XY-A(功能:坐标计算程序)
5→N: G(Q-1-P-1)÷Abs(L-A)→F: Abs(K-A)÷N→R: 90R÷π→S:
W+(FNR+2GP-1)NS→M:1→E←┘
U+R÷6×(Cos(W)+Cos(M)+4∑(Cos(W+((E+0.5)FR+2GP-1)×(E+0.5)S),E,0,(N-1))+2∑(Cos (W+((EFR+2GP-1)ES,E,1,(N-1)))→X ←┘
V+R÷6×(Sin(W)+sin(M)+4∑(Sin(W+((E+0.5)FR+2GP-1)×(E+0.5)S),E,0,(N-1))+2∑(sin (W+((EFR+2GP-1)ES,E,1,(N-1)))→Y←┘
4子程序名: XY-B(功能:显示正算或反算结果)
If O=2:ThenClrText :"K×××=":"Z=":"X=":"Y=": Locate 6,1, K : Locate 4, 2, T : Locate 4,3, X : Locate 4,4, Y◢
If T=0 :Then ClrText :"QF(Z)=": Locate 8,1, M:M►DMS ◢
IfEnd←┘
ClrText :"K×××=":"S=": Locate 6,1, K : Locate 4, 2, I :
"F=":J:J►DMS ◢
IfEnd←┘
If O=3:Then "X=":"Y=":"K×××=":"Z=": Locate 4,1,C: Locate 4, 2, D : Locate 6,3,K :Locate 4,4,T◢
IfEnd: ClrText←┘
5子程序名:4(功能:将交点参数转为线元计算参数)
LbI 1: If List1[48]<0 :Then -1→List1[62] : Else:1→List1[62]:IfEnd
LbI2:IfK≥List1[57]:ThenList1[57]→A :List[1]→L :List1[23]→U :List1[24]→V : List1[31]→W : 10^45→P :10^45→Q : 0→G:IfEnd←┘
LbI 3:If K≥List1 [1]:Then List1 [1]→A : List1 [2]→L : List1 [19]→U : List1 [20]→V : List1 [29]→W : 10^45→P : List1 [46]→Q : List1 [62]→G: IfEnd←┘
LbI 4:If K≥List1[2]:Then List1 [2]→A: List1 [4]→L : List1 [25]→U : List1 [26]→V : List1 [32]→W : List1 [46]→P : List1 [46]→Q : List1 [62]→G: IfEnd←┘
LbI 5:If K≥List1 [4]:Then List1 [4]→A : List1 [5]→L : List1 [27]→U : List1 [28]→V : List1 [33]→W : List1 [46]→P : 10^45→Q : List1 [62]→G: IfEnd←┘
LbI 6:If K≥List1 [5]:Then List1 [5]→A : List1 [5]+1000→L : List1 [21]→U : List1 [22]→V : List1 [30]→W :10^45→P : 10^45→Q : 0→G : IfEnd←┘
6子程序名:JDYS(功能:输入交点要素、显示交点要素及主点坐标)
ClrText : " BP="? →H:H→List1 [57]:"K(JD)="? →K:K→List1 [41] :"X(JD)="? →X :X→List1 [42]:"Y(JD)="? →Y:Y →List1 [43]:"LS1="? →B:B→List1 [44] :"LS2="? →C:C →List1 [45]: “R=”? →R:R →List1 [46]:"(ZH)FWJ°="? →M:M→List1 [47] : "α(Z-,Y+)°"=?→O:O→List1 [48] : List1 [47]+ List1 [48]→List1 [49]: Prog "1":Prog "2"←┘
ClrText :"T1=":"T2=":"L=":"LY=": Locate 4,1, List1 [50] : Locate 4,2, List1 [51]: Locate 4,3, List1 [52] : Locate 4,4, List1 [53]◢
Cls :"E=": Locate 7,1, List1 [54] ←┘
ClrText :"K(QD)=": "X=": "Y=": "FWJ="Locate 7,1, List1 [57] :Locate 7,2, List1 [23] :Locate 7,3, List1 [24] :Locate 7,4, List1 [31] ◢←┘
ClrText :"K(ZH)=": "X=": "Y=": "FWJ=":Locate 7,1, List1 [1] : Locate 7,2, List1 [19] :Locate 7,3, List1 [20] :Locate 7,4, List1 [29]◢←┘
ClrText : "K(HY)=": "X=": "Y=": "FWJ=": Locate 7,1, List1 [2] : Locate 7,2, List1 [25] :Locate 7,3, List1 [26] :Locate 7,4, List1 [32]◢←┘
ClrText :"K(QZ)=": Locate 7,1, List1 [3]◢←┘
ClrText :"K(YH)=": "X=": "Y=": "FWJ=": Locate 7,1, List1 [4] : Locate 7,2, List1 [27] :Locate 7,3, List1 [28] :Locate 7,4, List1 [33]◢←┘
ClrText :"K(HZ)=": "X=": "Y=": "FWJ=": Locate 7,1, List1 [5] : Locate 7,2, List1 [21] :Locate 7,3, List1 [22] :Locate 7,4, List1 [30]◢←┘
7子程序名: 1(功能:计算交点要素)
If List1 [48]<0 :Then -1→List1 [55] : Else 1→List1 [55] : IfEnd : List1 [55]* List1 [48]→List1 [56] ←┘
List1 [44] 2 ÷24÷List1 [46]- List1 [44]^(4)÷2688÷List1 [46] ^(3) →List1 [6] ←┘
List1 [45] 2 ÷24÷List1 [46]- List1 [45]^(4)÷2688÷List1 [46] ^(3) →List1 [7] ←┘
List1 [44]÷2- List1 [44]^(3)÷240÷List1 [46]2 →List1 [8] ←┘
List1 [45]÷2- List1 [45]^(3)÷240÷List1 [46]2 →List1 [9] ←┘
List1 [8]+(( List1 [46]+ List1 [7]-( List1 [46]+ List1 [6])cos(List1 [56]))÷sin(List1 [56]))→List1 [50] ←┘
List1 [9]+(( List1 [46]+ List1 [6]-( List1 [46]+ List1 [7])cos(List1 [56]))÷sin(List1 [56]))→List1 [51] ←┘
List1 [46]* List1 [56]π÷180+( List1 [44]+ List1 [45]) ÷2→List1 [52] ←┘
List1 [46]* List1 [56]π÷180-( List1 [44]+ List1 [45]) ÷2→List1 [53] ←┘
(List1 [46]+( List1 [6]+ List1 [7])÷2)÷cos(List1 [56]÷2)- List1 [46]→List1 [54] ←┘
List1 [41]- List1 [50]→List1 [1] ←┘
List1 [1]+ List1 [44]→List1 [2] ←┘
List1 [2]+ List1 [53]÷2→List1 [3] ←┘
List1 [1]+ List1 [52]- List1 [45]→List1 [4] ←┘
List1 [4]+ List1 [45]→List1 [5] ←┘
8子程序名: 2(功能:计算主点坐标及切线方位角)
List1 [42]- List1 [50]cos(List1 [47])→List1 [19]: (直缓坐标)
List1 [43]- List1 [50]sin(List1 [47])→List1 [20] ←┘
List1 [47]→Z : 360Frac((Z+360)÷360→List1 [29] (方位角)
List1 [42]+ List1 [51]cos(List1 [49])→List1 [21]: (缓直坐标)
List1 [43]+ List1 [51]sin(List1 [49])→List1 [22] ←┘
List1 [49]→List1: 360Frac((Z+360)÷360→List1 [30] (方位角)
List1 [1]- List1 [57]→L←┘ (H→List1 [57]为前直线起点桩号)
List1 [42]-( List1 [50]+L)cos(List1 [47])→List1 [23] ←┘ (前直线起点坐标)
List1 [43]-( List1 [50]+L)sin(List1 [47])→List1 [24] ←┘
List1 [47]→Z : 360Frac((List1+360)÷360→List1 [31] ←┘ (方位角)
List1 [44]→List1 [12]: List1 [44]→List1 [13]:Prog"3"←┘
List1 [4]- List1 [1]→L:90(2L- List1 [44])÷List1 [46]÷π→List1 [11] ←┘
List1[46]sin(List1[11])+List1[8]→List1 [14]: List1 [46](1-cos(List1 [11]))+ List1 [6]→List1 [15] ←┘
List1 [19]+ List1 [14]cos(List1 [47])- List1 [55] List1 [15]sin(List1 [47])]→List1 [27] ←┘ (圆缓点坐标)
List1 [20]+ List1 [14]sin(List1 [47])+ List1 [55] List1 [15]cos(List1 [47])]→List1 [28] ←┘
List1 [47]+ List1 [55] List1 [11]→Z: 360Frac((List1+360)÷360→List1 [33] ←┘(方位角)
List1 [2]- List1 [1]→L:90(2L- List1 [44])÷List1 [46]÷π→List1 [58] ←┘
List1 [46]sin(List1 [58])+ List1 [8]→List1 [14]: List1 [46](1-cos(List1 [58]))+ List1 [6]→List1 [15] ←┘
List1 [19]+ List1 [14]cos(List1 [47])- List1 [55] List1 [15]sin(List1 [47])]→List1 [25] ←┘ (缓圆点坐标)
List1 [20]+ List1 [14]sin(List1 [47])+ List1 [55] List1 [15]cos(List1 [47])]→List1 [26] ←┘
List1 [47]+ List1 [55] List1 [58]→Z: 360Frac((List1+360)÷360→List1 [32] ←┘(方位角)
9子程序名: 3(主点坐标计算辅助程序)
If List1 [12]=0 :Then 0→List1 [14]: 0→List1 [15]:Else←┘
List1 [12]- List1 [12]^(5)÷40÷(List1 [46]×List1 [13])2+ List1 [12]^(9)÷3456÷(List1 [46] × List1 [13])^(4) →List1 [14] ←┘
List1 [12]^(3)÷6÷(List1 [46] ×List1 [13])- List1 [12]^(7)÷336÷(List1 [46] × List1 [13])^(3)+ List1 [12]^(11) ÷42240÷(List1 [46] ×List1 [13])^(5)→List1 [15] ←┘
IfEnd←┘
程序说明:
1、进入程序:1.JD ZFS 2. ZD ZFS? 选1为交点法正反算(以后操作均为交点法计算),选2为线元法正反算(以后操作均为线元法计算)
2、CHONG SHU JS 2. JS?选1重输参数,选2直接进入交点法或线元法正反算(参数为已输过的参数)
3、参数输入:
一、交点法已知数据输入:
BP?上一交点ZH桩号
K(JD)?交点桩号
X(JD)?交点X坐标
Y(JD)?交点Y坐标
LS1 ?第一缓和曲线长度
LS2 ?第二缓和曲线长度
R ? 圆曲线半径
(ZH)FWJ°?交点前(即前交点至本交点也即ZH点)的正切线方位角
α(Z-,Y+)?本交点处线路转角(左转为负,右转为正,度分秒输入)
交点法计算要素显示:
T1=第一切线长
T2=第二切线长
L=曲线总长
LY=圆曲线长
E=曲线外距
K(ZH)=直缓点桩号
K(HY)=缓圆点桩号
K(QZ)=曲中点桩号
K(YH)=圆缓点桩号
K(HZ)=缓直点桩号
二、线元法已知数据输入:
K0? KN? R0? RN?F0?X0? Y0?ZX? 分别为线元起点桩号 、终点桩号、起点半径、终点半径、起点切线方位角、起点X坐标、起点Y坐标、线元转向。
4、XC ? YC? 输入置镜点即测站的X,Y坐标
5、1.ZS 2.FS选1正算 选2反算
程序线元判断原则:
(1) 以道路中线的前进方向(即里程增大的方向)区分左右;
(2) 当所求点位于中线时,Z=0;当位于中线左侧时,Z取负值;当位于中线右侧时,Z取正值。
(3) 当线元为直线时,其起点、终点的曲率半径为无穷大,以10的45次代替输入×10x45。
(4) 当线元为圆曲线时,无论其起点、终点与什么线元相接,其曲率半径均等于圆弧的半径。
(5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45次代替输入×10x45;与圆曲线相接时,曲率半径等于圆曲线的半径。终点与直线相接时,曲率半径为无穷大,以10的45次代替输入×10x45;与圆曲线相接时,曲率半径等于圆曲线的半径。
(6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。终点与直线相接时,曲率半径等于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
6、循环计算部份:
输入与显示简单说明
JD ZS KX+XXX? 或 ZHADAO ZS KX+XXX?输入所求的桩号(交点法或线元法 )
Z ? 输入所求点距中线的边距(在中线输零,左负右正)
RJ? 输入边桩时左右边桩连线与线路前进方向中桩切线的右交角(当输入数字0时进入下一个桩号计算输入)
X =、Y = 计算得出的所求点的左、中、右 的X Y坐标
QF(Z)= ××× 计算得出所求点的中桩切线方位角
F= ××× 计算得出置镜点到测点的方位角
S= ××× 计算得出置镜点到测点的水平距离
JD FS KN+? 交点法反算时需输入反算点所在(前直线,前缓和段、圆曲线、后缓和段、后直线)线元中的任一点桩号(定位线元用)
X=××× 反算输入所求点的X坐标
Y=××× 反算输入所求点的Y坐标
K=××× 计算得出求点所对应的里程
Z=××× 计算得出求点到所对应的里程的垂直距离 (负就是左边,正就是右边) |
|