| 一、程式: N=12 Lbl 1:{SABCIKTJ}:S“L1=”:A“X1=”:B“Y1=”:C“A1=”:O=C:I“R1=”:D=I:K“L2=”:T“R2=”:F=T:I=0=>T=0=>J=1 Δ Δ J“L-1(R+1)=” D≠0=>D=D^-1 Δ F≠0=>F=F^-1 Δ ‘将半径转换为曲率 Lbl 2 Z=0:Q=0:U=0:V=0:P=N+1:{L}:L“LC=” L<S=>Goto1Δ ‘当正算时,若计算点在线元里程范围外,则转至Lbl 1重新输入线元要素 L>K=>Goto1Δ H=(L-S)÷N:D≠0=>Goto3 Δ F= 0=>Goto 6Δ 判断线元是否为直线,是则转至直线计算程式6 Lbl 3 Dsz P:Goto 4:Goto 5 Lbl 4 ‘计算各点曲率及方位角 E=P÷2:G=D+(F-D)÷(K-S)×H×P:M=C+(G+D)×H×P×90÷π×J P=N=>O=M Δ E≠Int E=>Z=Z+CosM:Q=Q+SinM:≠>U=U+CosM:V=V+SinMΔ Goto 3 ‘此时O为计算点(当计算点在线路外侧时,则为相应中心点)的坐标方位角 Lbl5 X=A+Abs H÷3×(Cos C+4×Z+2×U-CosO))▲ Y= B+Abs H÷3×(Sin C+4×Q+2×V-Sin O)▲ O>360=>O=O-360:≠>O<0=>O=O+360Δ Δ O”A=”▲ Prog “LRZB” Goto 2 Lbl 6 ‘直线上坐标计算程式 H=(L—S) X=A+H×Cos O▲ Y=B+H×Sin O▲ O”A=”▲ Prog “LRZB” Goto 2 二、变量说明: N----曲线元N值 S---曲线元起点里程 A----起点X坐标 B----起点Y坐标 C----起点切线方位角 I、D----起点半径 K---曲线元终点里程 T、F----终点半径 J----线元左右偏判别(1右-1左) L----计算点里程
子程式“LRZB” ‘计算线路中线左右两侧点坐标 Lbl1:W=-1:{WR}:W“ANG=”:W=1=>Goto 2 Δ R“D=”:O=O+W↓ X“[X]”=X+R×Cos O▲ Y“[Y]”=Y+R×Sin O▲ O>360=>O=O-360:≠>O<0=>O=O+360Δ Δ Goto 1 Lbl 2 说明: 说明: 本子程式计算曲线两侧任意夹角点坐标,可以无限计算连续点坐标,前提是当提示”ANG”时,输入转向角度就是了.如果输入”-1”则回到计算中线坐标上来.重新计算下一点坐标
W----夹角(相当于曲线里面的转向角,为前一直线(或切线)的延长线至计算点的夹角 R----前一点至计算点的直线长度
|