wyqzm网友:
问几个问题1、点到中线的垂距计算公式是怎么推导出来的,就是那个S=(XA-XB)SIN....我怎么也看不明白这是一个什么样的公式?别笑话哦!
2、假如一条线路有很多的曲线组合,怎么判断线路外的一点是位于哪一个曲线元上,因为只有判断出它位于哪一段之后才可以计算垂距呀?不知老兄有没有这方面的资料?
回答你的问题如下:
一,那个公式是个通式,同时可用于垂距计算和直线求交功能,而只需要计算垂距的话建议用直角三角形法,这是前人总结的一个公式,至于推导我看就没有必要了,如果你觉得不太可信,那么请你在坐标轴上设计一个点,将X轴当作直线段,用此式计算此点距X轴的距离试试,看看结果正确与否?
二,根据线元法的特点,曲线线型是由曲率半径定义的,直线元两端点的曲率半径是无穷大的,你可以用一个尽可能大的数定义,当然你也可以用无穷小来定义,即用0表示即可,圆曲线两端点的曲率半径是一个相等的定值,这个值都小于9999和大于0,而回旋线(即缓和曲线)则是两端点曲率半径不相等的线型,故从广义上来看,这三类线型其实都是曲线,当然了,包括通常所说的直线元也是,而所谓的不完整回旋线即是较之传统的回旋线的曲别在于它的某一端的曲率半径并不为无穷大(这样的线型基本上出现在匝道上).于是他们就有了共性了,我想现在你应该能看出来了.
所以说,判断曲线元的类型只需要看此曲线的曲率半径变化即可.
三,以上是积木法所推崇的思想,而传统的交点导线法普遍采用三单元设计,如纬地,少部分采用五单元或七单元设计,如EICAD,dicad pro等
四,你在第2条所说的"判断线路外的一点是位于哪一个曲线元上",我认为是不妥当的,只有点位于曲线元"上",才能说位于哪一个曲线元上.我明白你说的意思,你要计算坐标所对应的桩号及边距,实际上也是在中线上进行搜索计算的,采用上面说的直角三角形法,当一垂直边趋近于0时收敛,这时判断方位角,方位角相同为左,相异则为右,此时三角形的另一边长度即是垂距了,同时,桩号实际上你已经搜索计算出来了.
改天我详细做个例子吧!今天没有多少时间.见谅!
以下面的一张贴图为例讲简单讲解一下
一,M=3是给定的常量,它是为后面的子程序读取数据库参数设定的,我在这里说明一下即可.
二,LBl 1后面的变量Z和T是分别存储你的输入的X(N),Y(E)坐标的,接着,根据M的值,程序转去子程序X2读取曲线元的参数进行曲线元初始化(实际上M可以定义为M=1),返回本程序后将曲线元的起点桩号o赋给本程序设定的S进行初始化.
三,接下来下面的两行中,内置函数POL计算长度及方位角,试算第一次S(即设置的起点桩号)值增量,设置C为每次趋近增量值,并初始化为0
四,从LBl 2到Goto 2开始循环试算,直到趋近值为1000*C(也即1mm)时收敛,此时转向Lbl 3,输出里程"K=",左或右边距"L=",接着转向坐标输入处提示输入坐标计算其他里程及边距.
从以上全部流程看来,本程序只需要你输入任意X,Y坐标即可自动算出对应的桩号和边距,而无需再输入其他参数,这应该算是本程序的特点了.
//***************************************************************************//
精度: 1mm
特点: 仅需要输入X,Y坐标,即可自动计算出对应的桩号及左右边距,由于采用线元法,因此可以适用于所有曲线类型组合,而且支持不完整回旋线上的对应桩号及边距的反算.当输入的坐标不在此路线范围内时,程序将提示你输入有误!
缺点: 受此类计算器的速度影响,正算程序中需要内置的参数比较多,占用的空间也相对比较大,而此反算程序在实际工作中有90%以上的时间都是消耗在子程序XA上进行坐标计算的.
//***************************************************************************//
楼上的朋友,你下载过我曾经提供过的Gauss-Legendre 5节点通式程序的,当时weil2003为了讨论吧,我并没有将反算部份加入到那个excel文档里面来.现在,将下面这段代码输入到你的计算器中便可直接使用了.本代码在CASIO 4850P上面测试,如果你用的是4800,那么请你将输出显示部份修改一下即可.
另外,本程序只是做反算算法,但也用到了坐标的正算,程序中Prog "XA",即是;由于反算程序并不需要输出方位角,所以程序中也没有必要进行0-360度的方位角判断和转化,任何时候,正弦和余弦函数的值并不受到影响,因此,这个特性在后面也被用来判断点位是处于中线左侧还是右侧.
声明:
1,你下载过的那个程序的思想来自"测量空间",我引用了它的正算部份,这个反算和数据库的思路完全是我自己的,正算算法请看你下载过的我的正算部分和测量空间的那个帖子 http://www.celiang.net/celiang/article_view.asp?id=426&author=hanniu_1973
2,在你自己的帖子里面其实已经包含了正算算法和反算算法的, http://bbs2.sinoaec.com/forum/detail3459444_1.html ;,可能你下载过后没有仔细消化吧? 呵呵,收集资料是美德,但光收集不吸收利用可就用处不大了啊!原来你那个附件是有VBA密码的,在你的那个主题的后面我已将密码去除,那里面的代码是VBA形式的,你有没有看过呢?或许有点用哦.
也不啰嗦了,现在看看相关截图吧! 打星号是标题,在计算器中是程序名,下面的就是全部反算代码,但不包括需要用到的坐标正算部份.即XA子程序.
正在上传…重新上传取消
看了斑竹的提问,其实,斑竹主要是没有理解透彻6楼的(2-5)公式的含义,对照7楼2-2图,实际上J1、F是已知点,相当于图2-1中的A、B两点。图2-2中的G1点是一个垂足,也是一个动点,它随着J1点的变化而变化,计算的过程也是一个逐渐趋近的过程,当J1与J重合时,即是所求的点到中线的距离。反算离不开正算或者说正算是反算的基础。
2-5式子是一个结解算AC、BC的通式,里面的α是一个变量,如果要很好的理解它,可以写成两个式子。
按现在斑竹的理解,还没有达到讨论编程计算的程度,斑竹可能还没有理解透彻这里面的公式含义,当然不包括公式推导。另外,好象还有更好的计算模型,就是苦于没有找到相关的文章。
以上是我的理解,不知对否?请上面两位兄弟指正。
正在上传…重新上传取消式(2-5)是个通式,方位角方向直接决定它的正负号.用不着写两个公式.此式在直线求交的算法中才能用得上,求解垂距的算法用不着这个公式,如果按照图中所解,求垂距的算法反而麻烦了,这是我没有用那个算法的原因.
只是有一点不解的是,我将反算算法已经贴出来了,并且认为还是相当简单的,怎么版主好像没有看哦!?!其实我已经说过几次了,版主你自己发的带附件的贴子里面也有反算算法,看来你真的是没有看哦.
回wyqzm网友,
你的算法我已经看了,只是有点难懂,你叫我输入计算器使用,我没有你的两个子程序X2和XA所以无法运行。你叫我看自己发的带附件的贴子里面也有反算算法,不知是我的excel不行还是别的原因。我没有看到这个东西,或许还是我看不懂excel vba程序的缘故?截图如下:
说句老实话,你们已经把反算复杂化了,其实说其基本原理应该说是很简单的。也就是迭代法。正算的微分后的积分。
李全信的论文就是反算的基本原理,只是觉得很难理解。
1、他将反算复杂化,将其分成直线,圆曲线、缓和曲线。给了个万能公式,很难理解。
2、也就是迭代法,将正算公式进行微分,就可以知道该如何迭代了。
3、要想编写好反算的程序,正算是前提,其实反算在正算基础上的程序很短。
建议:多画图,多用数学方法解决,最好看看《数值计算方法》。
目前网上给的正算程序均是在万能公式下的,很难理解。我也没有怎么明白它的反算思路。因为看了一些不明白的公式计算,建议不要用他的思路,否则很难解决。
其实线路坐标反算也可以用笨办法去解决
线路无非就是直线、圆曲线、缓和曲线三种,直线上的坐标反算我想没人不会吧。
圆曲线上坐标反算无非就是先算出圆心坐标,假设圆心为O点,圆曲线起点为A,终点为B,任意点为C,C与O连线后,应处于与A0与BO连线夹角内,CO与AO或BO的夹角可求得任意点里程,CO的距离减去圆曲线半径即为距线路中线的距离。
在缓和曲线上,要计算任意里程的法线方向及任意宽度的边线坐标,非常简单。但要计算任意一个已知坐标点,是对应哪一个里程法线方向上的点,就有一些闲难。很难推导—个这样的计算公式。唯一的方法“渐进”,如果手工计算这可不是一个好方法。但在有CASIO系列可编程计算器,如:FX-4500的情况下就变得非常简单了。亦可用于直线和圆曲线的计算。
首先在缓和曲线上任选一点A为起始点,(图8-1)计算该点的坐标和切线方位角。通过坐标反算求起始点A与计算点B的方位角利距离,B点肯定对应A点切线方向上有一个垂足c点,把三点看成一个直角三角形,通过解直角三角形计算AC的距离。当该距离大于某一数值,如0.001m,A点里程加AC的距离等于C点的里程,回到开始重新进入新一轮的计算,如果AC的距离小于某一规定值,则计算C点的里程与BC的距离即可。(示意图见附件)
正在上传…重新上传取消
摘 要:用定积分的方法推导出求线路中线点坐标的积分通式,采用复化辛卜生(Simpson)公式给出其数值积分式。在此基础上推导出了求地面点与线路中线相对位置关系的公式。并进行工程实例计算,给出基于CASIO fx-4500P的计算器程序,大大提高了工作效率。
关键词:测量;通用公式;编程;曲线元
在线路中线及边线点坐标计算中,我们通常采用切线支距等公式计算各点坐标,但在不同线型上计算时就需要使用不同的公式,计算公式不具备通用性,给计算带来了不便。在缓和曲线计算时,螺旋线方程式的取项数对计算精度的影响随缓和曲线长度及圆曲线半径的不同而不同,取项不当会出现较大计算误差,取项太多又会增加计算难度。在道路的设计、施工、竣工阶段,经常需要测定地面点与线路中线的位置关系,以便为设计、施工及竣工提供准确数据。用常规方法及公式测定计算地面点与线路中线的位置关系难度相当大。针对以上问题,笔者用定积分的方法给出了求线路中线点的积分通式,并采用复化辛卜生公式给出其数值积分式,进而推导出了求地面点与线路中线相对位置关系的公式。并进行了工程实例计算及编程。
1 求线路中线坐标的通用公式推导
线路形式多种多样,但都是由直线、圆曲线及缓和曲线组成。而这3种线型都具有曲率随弧长作线性变化这一共性,故可用曲线元代表3种线型中的任意一种。由此易推出已知弧长l求任意点i的坐标的积分通式如下:
正在上传…重新上传取消 (1)
式中:XA、YA为曲线元起点的坐标,αi为曲线元上任意点i的切线方位角,其计算通式为:
正在上传…重新上传取消 (2)
式中,αA为曲线元起点切线方位角,PA为曲线元起点曲率,PB为曲线元终点曲率,L为曲线元长度,l为任意点距曲线元起点的弧长。±表示曲线元的偏向,左偏取“-”,右偏取“+”。αA、αi单位均为度。
由于用式(2)代入式(1)所表示的积分是不可积的,故采用复化辛卜生公式给出其数值积分式为:
正在上传…重新上传取消 (3)
式中,m为积分区间等分数n的一半,α2K-1为曲线元上n等分点(偶数点)处的切线方位角,α2K为曲线元上n/2等分点(奇数点)处的切线方位角。
式(3)即为求线路中线坐标的复化辛卜生公式,也就是通用公式,它具有如下特点:1、适用于直线、圆曲线及各种类型的缓和曲线(完整或不完整);2、计算精度可人为控制,即随积分区间等分数n的取值不同,其计算精度也不同,可以根据实际情况选用合适的n值以保证计算精度和提高计算效率,3、计算方向是可逆的,即可以沿里程递增方向计算也可以沿里程递减方向计算。
2 线路边线点坐标的计算
用式(3)求得线路中线点坐标后,根据式(2)所求得的切线方位角,易得出求边线点坐标的计算公式:
正在上传…重新上传取消 (4)
式中,S为所求边线点与中线点之间的距离,Q为边线点方向与线路切线方向的夹角。±表示边线点相对于中线的方向,左边线点取“-”,右边线点取“+”。
3 地面点与线路中线相对位置关系的公式推导
3.1 计算原理
从线路中线坐标的通用公式推导可知,求地面点与线路中线相对位置关系即为求地面点与线路中线曲线元的相对位置关系。
如图1,AB为一曲线元,点P为一地面点,点P的坐标为已知或可用仪器测得。过点P作垂线PP′,lP为垂足点P′到起点A之间的弧长,DP为点P与线路中线的垂距,由图可知,点P与线路中线相对位置可由2个唯一的量lP和DP确定。由于点P可能位于中线的左边或右边,所以为了区分,DP也分正负,当P点位于线路左边时取负值,反之取正值。
正在上传…重新上传取消
图1 地面点与曲线元相对位置关系
由此,根据DP的符号,可以确定点P相对于线路的边向,而DP的值则确定了点P与中线的垂距,点P相对于线路的里程LP可由曲线元起点的里程LA和弧长lP计算得:
LP=LA+lP
因此,确定地面点与线路中线的相对位置关系就转化为求DP和lP了。
直接求解DP和lP十分困难,在此采用趋近原理来达到计算目的。
如图2,已知曲线元起点A的坐标(XA,YA),过点A的切线方位角αA,起点A和终点B的曲率KA和KB,曲线元的长度L,地面点P的坐标(XP,YP),现求lP 和DP。
正在上传…重新上传取消
图2 DP与LP的趋近计算原理
在lP 和DP两个量中,如果求得lP ,即可用式(3)求得P′的坐标,由此可方便求出DP。因此问题的关键在于求lP ,在此趋近也就是指lP 趋近。由图可知,曲线元的法线有无穷条,但通过点P的法线却只有一条(点P为圆心时除外),即PP′,因此,只要求得P点到曲线元的某一法线的距离为0,则问题得解。
取点P到起点A法线的垂距l1的绝对值作为lP的近似值代入式(3)可求得曲线元上一点P1,再以P点到通过P1点法线的垂距l2加上l1作为新的lP的近似值代入式(3)。为了确保循环收敛,l2的符号必须满足:当P1点位于P′点后(l1<lP)时,l2取正值,当P1点位于P′点前(l1>lP)时,l2取负值。根据点到直线的垂距公式得:
正在上传…重新上传取消(5)
当通过曲线元上点的法线方位角α法指向左边桩时,l2的符号正好满足以上要求,因此,规定α法指向左边桩,即α法=α切-90°。如此,用新的lP的近似值代入式(3)后,又得一点P2。同理,用P点到过P2点的法线的垂距l3加上l1及l2作为新的LP近似值,代入式(3),求得一点P3……,如此循环,当P点到通过曲线元上一点Pn的法线的垂距为0或小于某一微小值ε(即达到所需精度要求)时,这时的正在上传…重新上传取消即为所求的lP值,用lP代入式(3)易求出P′。根据P′和P的坐标,经反算可求得DP,为了达到前面所说的当P点位于线路左边时DP取负值,反之取正值的目的,DP值用如下公式计算:
正在上传…重新上传取消 (6)
如此就能保证DP的符号“左负右正”,同时,也可根据DP的符号判断P点是位于线路的左侧还是右侧。
3.2 计算步骤
1、用下式求得点P到通过A点的法线的垂距的绝对值l1:
正在上传…重新上传取消
2、以l1作为lP的近似值,即以l1作为l代入式(3),求得曲线元上一点P1的坐标(XP1,YP1)。
3、将P1点的坐标代入式(5)求得P点到过P1点的法线的垂距l2,式中α法可用式(2)求得α切后减90°得到。
4、以(l1+l2)作为新的lP的近似值代入式(3)可求得曲线元上一点P2的坐标(XP2,YP2)。
5、用求得的P2的坐标和α法代替P1的坐标和α法代入式(5),求得点P到过P2点的法线的垂距l3。
6、如果l3的绝对值为0或小于某一微小值ε(即达到所需精度要求),则正在上传…重新上传取消即为所求的lP值,如果l3的绝对值不能满足精度要求,则重复4~5步直到ln的绝对值满足精度要求,最终得:
正在上传…重新上传取消
7、用lP代替l,代入式(2)和式(3),求得曲线元上点P′的切线方位角α切和坐标(XP′,YP′),由α切减90°得法线方位角α法。
8、将P′的坐标和法线方位角代入式(6)得DP,按DP的符号“左负右正”的规律判断P点相对于线路中线的边向,而P点相对于线路中线的桩号LP=LA+lP。
4 工程实例计算
4.1 求线路中、边桩坐标
图3为某公路一卵形曲线线路,相关要素如图,相关设计数据见表1。
表1 某公路线路设计数据表
主点桩号 | 坐标 | 切线方位角 | |
X | Y | ° ′ ″ | |
K0+153.323 | 7970.566 | 2853.126 | 77-36-53.2 |
K0+203.323 | 7975.788 | 2902.605 | 96-42-48.1 |
K0+312.658 | 7900.989 | 2968.837 | 180-14-20.9 |
K0+360.833 | 7857.424 | 2951.506 | 226-14-34.4 |
K0+425.182 | 7850.229 | 2891.940 | 299-58-53.1 |
K0+485.182 | 7897.344 | 2856.352 | 334-21-32 |
正在上传…重新上传取消
图3 某公路线路图
4.1.1 计算K0+302.658中、边桩坐标
由K0+216.308起计算K0+312.658中桩坐标,积分区间等分数n取8。
曲线元起点曲率PA=0,终点曲率PB=1/75=0.0133,用式(2)计算各等分点处切线方位角如表2:
表2 K0+216.308~K0+312.658方位角计算表
桩号 | n/2等分点 | n等分点 |
K0+228.352 |
| 144-00-40.3 |
K0+240.396 | 145-44-10.7 |
|
K0+252.439 |
| 148-36-41.6 |
K0+264.483 | 152-38-12.7 |
|
K0+276.527 |
| 157-48-44.3 |
K0+288.571 | 164-08-16.2 |
|
K0+300.614 |
| 171-36-48.3 |
用式(3)计算K0+312.658中桩坐标如下:
X=7987.176+(312.658-216.308)/4/6×[cos143°26′10.1″+4×(cos144°00′40.3″+cos148°36′41.6″+cos157°48′44.3″+cos171°36′48.3″)+2×(cos145°44′10.7″+cos152°38′12.7″+cos164°08′16.2″)+cos180°14′20.9″]=7900.990
Y=2929.851+(312.658-216.308)/4/6×[sin143°26′10.1″+4×(sin144°00′40.3″+sin148°36′41.6″+sin157°48′44.3″+sin171°36′48.3″)+2×(sin145°44′10.7″+sin152°38′12.7″+sin164°08′16.2″)+sin180°14′20.9″]=2968.838
用式(4)计算K0+312.658右侧5m边桩坐标如下:
XB=7900.990+5×cos(180°14′20.9″+90°)=7901.001
YB=2968.838+5×sin(180°14′20.9″+90°)=2963.838
4.1.2 计算K0+360.833中、边桩坐标
由K0+425.182起计算K0+360.833中桩坐标,积分区间等分数n取4。
曲线元起点曲率PA=1/50=0.02,终点曲率PB=1/50=0.02,用式(2)计算各等分点处切线方位角如表3:
表3 K0+425.182~K0+360.833方位角计算表
桩号 | n/2等分点 | n等分点 |
K0+409.095 |
| 101-32-48.4 |
K0+393.008 | 83-06-43.8 |
|
K0+376.920 |
| 64-40-39.1 |
用式(3)计算K0+360.833中桩坐标如下:
X=7850.229+(425.182-360.833)/2/6×[cos119°58′53.1″+4×(cos101°32′48.4″+cos64°40′39.1″)+2×cos83°06′43.8″+cos46°14′34.4″]=7857.425
Y=2891.940+(425.182-360.833)/2/6×[sin119°58′53.1″+4×(sin101°32′48.4″+sin64°40′39.1″)+2×sin83°06′43.8″+sin46°14′34.4″]=2951.510
用式(4)计算K0+360.833右侧5m边桩坐标如下:
XB=7857.425+5×cos(226°14′34.4″+90°)=7861.036
YB=2951.510+5×sin(226°14′34.4″+90°)=2948.052
4.2 确定地面点与线路中线相对位置关系
用求线路中、边桩坐标所用线路计算,相关要素见图3,相关设计数据见表1,现测得若干地面点坐标如表4,如3.2计算步骤计算得结果一并列于表4:
表4 确定地面点与线路中线相对位置关系计算结果表
点号 | 所测地面点坐标(m) | lP(m) | DP(m) | 桩号 | 边向 | |
P1 | 7967.930 | 2889.968 | 37.066 | 8.384 | K0+190.389 | 右 |
P2 | 7955.109 | 2959.009 | 57.260 | -9.516 | K0+260.583 | 左 |
P3 | 7884.155 | 2957.918 | 19.538 | 8.499 | K0+332.196 | 右 |
P4 | 7839.711 | 2936.732 | 20.557 | -7.332 | K0+381.390 | 左 |
P5 | 7869.340 | 2882.443 | 21.118 | 8.415 | K0+446.300 | 右 |
由以上算例可以看出,通用公式的顺、逆运算都很方便,而且可以任取其中的一段进行计算,这对于计算不完整的曲线显得尤为方便。计算时应根据曲线半径的大小和曲线的长度选取合适的n值,以达到计算准确和简便的目的。对于一般曲线,n取4~6即可,对于小半径曲线,视计算长度而定,长度越长n也要相应取大,一般不少于8。
5 程序的编写
为了提高计算效率,保证计算的准确性,根据已推导的计算公式,编写了基于CASIO fx-4500P的计算器程序,程序如下:
5.1 求线路中、边桩坐标程序
F1 XPS
L1 I=L(B-A)/G
L2 J=N+90(I+2A)L/π
L3 M=N+22.5(I/4+2A)L/π:P=N+67.5(3I/4+2A)L/π:K=N+45(I/2+2A)L/π
L4 X=E+L(cosN+4(cosM+cosP)+2cosK+cosJ)/12◢
L5 Y=F+L(sinN+4(sinM+sinP)+2sinK+sinJ)/12◢
L6 U=X+Scos(J+Q) ◢V=Y+Ssin(J+Q) ◢
程序中符号意义:L—计算点至曲线元起点距离;A—曲线元起点曲率(曲率=1/R,直线曲率为0),曲线左偏为负、右偏为正;B—曲线元终点曲率(曲率=1/R,直线曲率为0),曲线左偏为负、右偏为正;G—曲线元长度;J—计算点切线方位角;N—曲线元起点切线方位角;X—计算点中桩X坐标;Y—计算点中桩Y坐标;E—曲线元起点中桩X坐标;F—曲线元起点中桩Y坐标;U—计算点边桩X坐标;V—计算点边桩Y坐标;S—计算点边桩距中桩宽度;Q—计算点边桩方向与该点线路切线方向夹角,左边桩为负、右边桩为正。
本程序中积分区间等分数n取4,如需更高精度要求可在L3~L5句间增加相应语句更改。
5.2 确定地面点与线路中线相对位置关系程序
F2 XPSFS
L1 L=Abs((Z-F)cos(N-90)-(W-E)sin(N-90))
L2 LbI 0:Prog XPS
L3 H=(Z-Y)cos(J-90)-(W-X)sin(J-90)
L4 AbsH≤0.001L=L+H◢D=(Y-Z)/sin(J-90)◢L=L+H:Goto 0
程序中符号意义:W—地面点X坐标;Z—地面点Y坐标;L—地面点对应中桩距曲线元起点距离,即lP;D—地面点距中桩距离,即DP,左侧为负、右侧为正;其余符号意义与XPS程序相同。
本程序中ε(即所需精度要求)取0.001m,如需不同精度要求可更改L4句中的“0.001”至所需值。
5.3 计算机编程
计算机编程思想与计算器编程一样,只是表达形式不同,在此就不再作详细说明。
6 结束语
通过对线路测量通用公式的推导及编程,达到了计算灵活、简便的目的,而且解决了常规计算公式不具备通用性的问题,同时计算精度可根据实际需要控制,公式的顺、逆运算都很方便,具有很强的实用性,程序的应用大大提高了计算效率,在工程实践应用中效果良好。
参考文献:
[1] 李全信.确定地面点与线路中线相对关系的统一数学模型[J].测绘通报,2002,(8):34-37.