计算器单交点对称型平曲线坐标反算里程程序.doc
文本预览下载声明
单交点对称型平曲线坐标反算里程程序单交点坐标反算桩号,缓和段反算速度小于5秒。含DJDZBFS????(主核心程序)SET????????(设置程序)TL?????????(点到直线,求垂足,及垂足至‘原点’距离)X 待求点N坐标,当输入-1值时可以进入要素输入程序Y 待求点E坐标Z[1]?起点NZ[2]?起点EZ[3]?交点NZ[4]?交点EZ[5]?终点NZ[6]?终点EZ[7],L? 第一缓和段长Z[8],R? 半径Z[9],M? 第二缓和段长Z[10],V? 交点桩号T第一切线长(SET程序内部计算,不需输入)U第二切线长(SET程序内部计算,不需输入)H第一切线方位角(SET程序内部计算,不需输入)C第二切线方位角(SET程序内部计算,不需输入)Z[11]?用于判断程序要是否被其它程序扰乱(SET程序内部计算,不需输入)
先编SET(子程序)再(TL子程序) 最后编(DJDZBFS主程序) DJDZBFS????(单交点坐标反算主程序) Z[1]+Z[2] +Z[3] +Z[4] +Z[5] +Z[6] +L +R +M +V +T+U+H+C≠Z[11]= PorgSET ;判断要素是否被其它程序扰乱,是则调用SET程序重设要素
Lbi?SRad:Norm?1 设置计算机角度单位为弧度及小数点显示模式?XIF X=-1:Then?Porg”SET”:Goto?S?:IfEnd ?;如要想改变要素可以在X坐标输入”-1”?YZ[3]→NZ[4]→EH+π→WProg?TLIf?GT:Then?V-G→G?;反算点在ZH(ZY)点前直线段上-I→IGoto?E?Else?? ;反算点在在ZH(ZY)点后If?L≠0:Then?Rec(T,H) ;有缓和段Z[3]-J→N?????????????;计算ZH点X坐标Z[4]-I→E??????????????;计算ZH点Y坐标Pol(L-L^(3)÷40÷R2,L2÷6÷R-L^(4)÷336÷R^(3))K0=-J→JH+J→JRec(I,J)N+J→N????????????????;计算HY点X坐标E+I→E?????????????????;计算HY点Y坐标K0=-B→BH+B→WProg?TLIf?G0?:Then?Rec(T,H) ;反算点在第一缓和段上Z[3]-J→N?????????????;计算ZH点X坐标Z[4]-I→E??????????????;计算ZH点Y坐标Pol(L-L^(3)÷40÷R2,L2÷6÷R-L^(4)÷336÷R^(3))K0=-J→JH+J→WProg?TLN→AE→SG→QLbi?1Pol(Q-Q^(5)÷40÷R2÷L2,Q^(3)÷6÷R÷L)K0=-J→JH+J→JRec(I,J)A+J→N?????????;计算假设垂足点X坐标S+I→E??????????;计算假设垂足点Y坐标Q2÷2÷R÷L→W ;计算假设垂足点切线方向K0=-W→W H+W→WProg?TLIf?Abs(G)0.001?:Then??Q+G→Q:Goto?1???????如果反算桩号精度要求不高的话可以把Abs(G)0.001??改为Abs(G)0.01?CM级别,这样反算桩号速度就快,但如设得过小的值,这可能导致无法反算成功。ElseV-T+Q+G→GGoto?E:IfEnd??;IfEndIfEnd
点不在HY点前继续执行以下语句Rec(U,C)Z[3]+J→N????????????;计算CZ(YZ)点X坐标Z[4]+I→E?????????????;计算CZ(YZ)点Y坐标M=0=Goto?2?;如果没有缓和段则跳过Pol(M-M^(3)÷40÷R2,M2÷6÷R-M^(4)÷336÷R^(3))K0=-J→JC+π+J→JRec(I,J)N+J→N?????????;YC点坐标E+I→ELbi?2K0=-O→O(是欧)C+O→WProg?TLIf?G0?:Then?????;反算点在圆曲线上π÷2→WK0=-W→WC+π+O+W→WIF?Abs(W)?π:Then?IF?W0:Then?W-2π→W:Else?W+2π→W:IfEnd:IfEndRec(R,W)N+J→N?????????????;圆心坐标E+I→EPol(E-Y,N-X)I-R→IK0=-I→IK0=W-J→JK0=J-W→JIF?Abs(J)?π:Then?If?J0:Then?J-2π→J:Else?J+2π→J:I
显示全部