程式功能
本程式可以根據曲線段——直線、圓曲線、緩和曲線(完整或非完整型)的線元要素(起點坐標、起點里程、起點切線方位角、止點里程、起點曲率、止點曲率)及里程邊距或坐標,對該曲線段範圍內(如不在該範圍則自動轉入下一線元)任意里程中邊樁坐標進行正反算。
源程式
主程式(FQXZB)
1.主程式(FQXZB)
卡西歐編程是什麼?
Lbl 0:{HR}:N:U"XA":V"YA":O"DKA":G"F0":H"DKB":P"1/RA":R"1/RB":Q:D=(R-P)/(2Abs(H-O)):E=180/π:N=1=>Goto 1:≠>Goto 4Δ←┘
Lbl 1:{SZ}:S"DKI":S>=H=>S=HΔW=Abs(S-O):Prog SUB1:X"XS"=X◢
Y"YS"=Y◢
S=H=>Goto 5←┘
Lbl 2:{Z}:Z:F=G+QEW(P+WD)+90:I"XZ"=X+ZcosF◢
J"YZ"=Y+ZsinF◢ Goto 3
Lbl 3:{C}:C:C=0=>Goto 1:≠>Goto 2Δ
Lbl 4:{XY}:XY:I=X:J=Y:Prog SUB2:S"S"=O+W◢
Z"Z"=Z◢
Goto 4
Lbl 5:U=X:V=Y:O=H:G=G+180Q(WD+P)W/π:P=R
Goto 0
2. 子程式(SUB1)
A=0.1739274226:B=0.3260725774:K=0.0694318442:L=0.3300094782:F=1-L:M=1-K:C=G+QEMW(P+MWD):X=U+W(Acos(G+QEKW(P+KWD))+Bcos(G+QELW(P+LWD))+Bcos(G+QEFW(P+FWD))+Acos C):Y=V+W(Asin(G+QEKW(P+KWD))+Bsin(G+QELW(P+LWD))+Bsin(G+QEFW(P+FWD))+Asin C)
3. 子程式(SUB2)
T=G-90:W=Abs((Y-V)cosT-(X-U)sinT):Z=0:Lbl 0:Prog SUB3:L=T+QEW(P+WD):Z=(J-Y)cosL-(I-X)sinL:AbsZ<1E-6=>Goto1:≠>W=W+Z:Goto 0Δ←┘Lbl 1:Z=0:Prog SUB3:Z=(J-Y)÷sinF
4. 子程式(SUB3)
Prog SUB1:F=G+QEW(P+WD)+90:X=X+ZcosF:Y=Y+ZsinF
使用說明
1、規定
(1) 以道路中線的前進方向(即里程增大的方向)區分左右;當線元往左偏時,Q=-1;當線元往右偏時,Q=1;當線元為直線時,Q=0。
(2) 當所求點位於中線時,Z=0;當位於中線左鍘時,Z取負值;當位於中線中線右側時,Z取正值。
(3) 當線元為直線時,其起點、止點的曲率為0。
(4) 當線元為圓曲線時,無論其起點、止點與什麼線元相接,其曲率均等於圓弧的半徑的倒數。
(5) 當線元為完整緩和曲線時,起點與直線相接時,曲率為0;與圓曲線相接時,曲率等於圓曲線的半徑的倒數。止點與直線相接時,曲率為0;與圓曲線相接時,曲率等於圓曲線的半徑的倒數。
(6) 當線元為非完整緩和曲線時,起點與直線相接時,曲率等於設計規定的值;與圓曲線相接時,曲率等於圓曲線的半徑的倒數。止點與直線相接時,曲率等於設計規定的值;與圓曲線相接時,曲率等於圓曲線的半徑的倒數。
2、輸入與顯示說明
輸入部分:
N ? 選擇計算方式,輸入1表示進行由里程、邊距計算坐標 ;輸入非1值表示由坐標反算里程和邊距。
XA ?線元起點的X坐標
YA ?線元起點的Y坐標
DKA ?線元起點里程
F0 ?線元起點切線方位角
DKB ?線元止點里程
1/RA ?線元起點曲率
1/RB ?線元止點曲率
Q ? 線元左右偏標誌(左偏Q=-1,右偏Q=1,直線段Q=0)
DKI ? 正算時所求點的里程
Z ?正算時所求點距中線的邊距(左側取負,值右側取正值,在中線上取零)
X ?反算時所求點的X坐標
Y ?反算時所求點的Y坐標
顯示部分:
XS=××× 正算時,計算得出的所求點的X坐標
YS=××× 正算時,計算得出的所求點的Y坐標
S=××× 反算時,計算得出的所求點的里程
Z=××× 反算時,計算得出的所求點的邊距