CASIOfx—5800P公路坐标计算程序的设计与实践

2018-12-22 10:55向继平
电脑知识与技术 2018年33期
关键词:程序矩阵

向继平

摘要:CASIO fx-5800P是测绘与土木工程领域广泛使用的计算器,特别适合现场计算。本文通过比较分析,选取基于线元的Gauss-Legendre数学模型,结合CASIO fx-5800P计算器的特点,通过设计实用的公路坐标计算程序,提高现场计算的工作效率和精度。

关键词:Gauss-Legendre;线元;程序;矩阵;坐标计算

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)33-0241-03

在公路测量工作中,要经常对线路的中桩、边桩、结构物位置进行实地放样,这就需要在现场实时快速地获取放样点的坐标。我国现行《公路路线设计规范》规定,公路平面线形由直线、圆曲线和缓和曲线(回旋线)三种要素组成。在现代高速公路上,有时缓和曲线所占的比例超过了直线和圆曲线,成为平面线形的主要组成部分。缓和曲线的计算复杂,尤其是非完整缓和曲线,计算器编程计算是解决公路坐标现场计算的有效手段。

1 数学模型的选择

公路坐标计算的关键是数学模型的选择。传统的计算采用交点法,它针对组成公路平面线形的直线、圆曲线和缓和曲线采用不同的数学模型进行计算,计算时要先建立各个计算单元(直线、圆曲线、缓和曲线)的相对坐标系,再根据点的桩号确定其所在的计算单元,采用对应的计算公式求出该点在相对坐标系中的坐标,然后转换为公路统一坐标系的坐标,计算过程复杂。

线元法将组成公路平面线形的直线、圆曲线和缓和曲线均看作独立的单元——线元。直线可以看作是曲率半径为∞的曲线,圆曲线为曲率半径为定值的曲线,缓和曲线为曲率半径渐变的曲线,因此,公路中线可以看成是由曲线构成的。曲线元上任一点的曲率都随弧长作线性变化,基于这一共性推导出的任意点坐标计算积分通式——Gauss-Legendre公式可作为公路坐标计算的通用数学模型,该公式与点所在的位置无关。5节点Gauss-Legendre公式用于各种情况的缓和曲线坐标计算时,能满足计算误差小于1mm的精度要求,且其公式符合循环结构程序的特征。因此,设计公路坐标计算程序时,应基于线元法建立数学模型,并采用5节点Gauss-Legendre公式进行计算。

2 坐标计算的通用公式

如图1所示,P是线元SE上的任意中桩。线元起点S的桩号为ZS、曲率半径为RS、坐标为(xS, yS)、切线方位角为αS;线元终点E的桩号为ZE、曲率半径为RE;中桩P的桩号ZP。当曲线左偏时,RS和RE取负(-);当曲线右偏时,RS和RE取正(+)。

3 数据存储设计

数据存储设计是程序设计的核心工作之一。在公路坐标计算中,5节点Gauss-Legendre通用公式的10个计算参数(A1~A5、V1~V5)和7个线元参数(包括线元起点的桩号、曲率半径、坐标x、y和切线方位角;线元终点的桩号和曲率半径)的使用频次高,其精度直接影响到计算结果的精度,因此必须存储在一个固定、可靠的位置。

计算参数的使用具有一定的规律性,如计算时A1对应V1、A2对应V2、……、A5对应V5,因此宜采用额外变量来存储这些参数。程序设计时,可采用10个额外变量Z[1]~Z[10]分别存储这10个计算参数,具体分配方案见图2。

线元参数的存储可采用三种形式:额外变量、统计串列、矩阵。存储一个线元的参数至少需要7个额外变量,n个线元组成的路线需要7n个额外变量。CASIO fx-5800P计算器的统计串列每行只能存储3个数,存储一个线元的参数至少需占用3行。无论是采用额外变量,还是采用统计串列,线元参数之间的对应关系不直观,用户查看时容易造成困扰。CASIO fx-5800P计算器的矩阵每行可以存储10个数据,一行即可存放一个线元的全部参数,线元之间、线元参数之间的对应关系简单明了。若程序计算时指定将线元参数存放在矩阵Mat A中,程序运行结束后,可在COMP模式下,通过赋值命令将Mat A赋值给其他矩阵(如赋值给Mat F可执行命令Mat A→Mat F)。赋值完成后,在进行公路坐标计算前,只需将其对应的线元参数矩阵赋值给Mat A即可直接进行计算,无须重新输入线元参数,可有效地提高计算效率。CASIO fx-5800P计算器有多个矩阵,因此一个计算器中可以存放多个路线的数据。由上述分析可知,公路坐标计算程序宜采用矩阵存储线元参数,n个线元时的存储分配方案见图3。

4 线元参数输入设计

4.1 输入方式的选择

线元参数输入可采用三种方式:①直接创建,即在程序运行前,使用矩阵编辑器直接将线元参数输入到矩阵中;②基于数据库子程序,即先按规定的语句格式(语句中包含线元参数)建立数据库子程序,通过调用子程序,自动建立线元参数矩阵;③基于线元参数子程序,即先编写一个线元参数输入子程序,通过调用子程序,直接从键盘输入线元参数,程序自动建立线元参数矩阵。第一种方式用户不但要熟悉矩阵编辑器,而且要事先获得各个参数。第二种方式要根据设计数据修改数据库子程序的相关语句,用户需要具备一定的程序设计能力。第三种方式对用户的要求最低,只需要根据提示信息输入相应参数即可。为了提高程序的易用性,程序设计时应采用第三种方式。

4.2 输入项的选取

程序应通过控制输入数据的数量来减少输入错误,提高效率。设计程序时,要确定好线元参数输入的最小子集,凡能通过计算得到的参数,应采用程序自动计算的方式获得,以减少参数输入,降低出错概率。

公路是由若干首尾相連的线元组合而成,其线形连续是保证车辆安全行驶的基本要求。线形连续是指线元实体的起终点位置和切线方位角是连续的,即上一线元的终点是下一线元的起点,上一线元终点的切线方位角是下一线元起点的切线方位角。利用这一特性,在选取输入项时,只需将计算路段第1个线元起点的坐标和切线方位角、全部线元起点和终点的桩号及曲率半径作为线元参数输入的最小子集。

4.3 子程序的功能设计

在输入线元参数时,错误在所难免,若每次出错后都要将全部参数重新输入一遍,会严重影响用户的使用体验。为了解决这个问题,可将线元参数子程序设计成新建路线(NEW)、数据更新(UPDATE)两个子功能,若个别线元的参数输入错误(或设计变更),可先用矩阵编辑器直接修改Mat A中的对应数据,然后选择“数据更新”功能,让程序根据正确数据重新计算线元参数,并自动更新Mat A的数据。

4.4 子程序的主要代码

5 公路坐标计算程序设计

公路坐标计算包括中桩计算和边桩计算,前者要计算指定中桩的坐标和切线方位角,后者要计算对应边桩的坐标。

计算中桩坐标时,应先根据桩号确定其是否在Mat A所对应的路线区间上。若不在,应给出相应的提示信息;若在,则确定中桩所在的线元,然后调用该线元的参数计算中桩的坐标和切线方位角。中桩计算子程序(文件名为“ZZJS”)的主要代码如下:

6 结语

利用CASIO fx-5800P计算器以Gauss-Legendre公式为数学模型,采用矩阵存储线元参数,可精确的计算公路任意桩号的中桩和边桩坐标。本文的程序充分发挥了程序的自动计算功能,用户只需输入少量的线元参数,大量的参数由程序自动生成,程序可自动判断桩号的合法性,健壮性好,设计的输入和输出界面友好,用户使用非常方便。程序适用于各种类型的平曲线计算,若路线出现断链,可以断链处为分界点,将路线分为多个路段进行处理。

参考文献:

[1] 李全信.Gauss-Legendre公式在线路坐标计算中的应用研究[J].勘察科学技术,2004(2):44-47,52.

[2] 何名灯.CASIO fx-5800P型计算器在线路测量中的应用[J].城市勘測,2018(1):141-144.

[3] 覃辉,段长虹.CASIO fx-5800P矩阵编程计算器原理与实用程序[M].上海:同济大学出版社,2007.

[4] 王中伟.CASIO fx-5800P计算器与道路坐标放样计算[M].广州:华南理工大学出版社,2008.

[5] 顾孝烈,程效军.fx-5800P计算器土木工程测量计算程序开发与应用[M].上海:同济大学出版社,2007.

【通联编辑:光文玲】

猜你喜欢
程序矩阵
试论我国未决羁押程序的立法完善
失能的信仰——走向衰亡的民事诉讼程序
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
关于矩阵奇异值分解的注记
初等行变换与初等列变换并用求逆矩阵
创卫暗访程序有待改进
矩阵
矩阵
矩阵