版权信息
省级大型综合性科技类期刊
主管部门:自治区科技厅
主办单位:自治区科学技术信息研究院 
协办单位:自治区科学技术情报学会
编辑出版:科技期刊编译室
刊社地址:内蒙古呼和浩特新城西街149号本刊杂志社
邮政编码:100010
电      话:0471-2536371

E-mail  :

nmgkjzz@vip.163.com 

网站地址:www.nmgkjzz.com


往期杂志
当前位置: 首页>往期杂志>详细介绍

求两条直线交点的一种算法及其应用

时间:2016-10-27来源: 作者: 点击: 86次

龙汉

(湖南长沙,长沙中大建设监理有限公司,邮编:410075

 

        摘要

文中给出了求两直线交点的复数算法,通过平面直角坐标变换把求解二元一次方程组的问题,转化成解一元一次方程的简单计算。该算法具有简单、直观、节省计算器内存的优点。 CASIO FX-9860GII SD上根据该算法实现了编程,并通过铁路曲线布置桥台的承台中心坐标的计算实例,验证了所推导公式和程序代码的正确性。文中列出了相应的程序代码,以供读者使用。

关键词:算法;坐标变换;两直线交点;复数;编程

An algorithm for computing the coordinates of Intersection of two straight lines

And its application

Longhan (Changsha Central South University Construction Supervision C0.,Ltd

,PostCode : 410075)

 

Abstract

An algorithm,which is used to compute the coordinates of Intersection of two straight lines

,is introduced by the author.Through plane coordinate transformation,to solve a group of simultaneous linear equations with two unknowns is turning into to a solve

a linear equation with one unknown.Related formula are

deduced,an program which can be run on CASIO FX-9860GII SD electronic calculator is written.The results of a concrete calculation example of a bridge abutment shown that the  algorithm is correct.

Key Words: coordinate transformation;algorithm;Intersection of two straight lines;complex;programming

 

 

一、前言 在工程施工测量实践中,经常会碰到求两直线交点的坐标的问题。通常的解算方法是,分别列出两直线的方程,然后用克莱姆法则解二元一次方程组得出交点的坐标【1】。有没有更为简易的计算方法呢?笔者通过研究,提出了下面一种基于坐标变换的复数解算方法。

二、基础知识 由于本文的算法涉及到复数并在Casio Fx-9860 G II SD电算器编程,所以有必要简单介绍一下有关Casio Fx-9860GII SD图形编程计算器和复数的基本知识。

1、Casio Fx-9860 GII SD是卡西欧公司推出的可编程计算器。因其具有体积小、重量轻、便于携带,具有64K闪存,其中可供用户使用的内存容量为62K;有大容量的串列,内置6个串列文件File1~File6,每个串列文件内设有26个串列,串列单元可以存贮复数;使用类BASIC结构化程序语言,并可与计算机进行通信等优点,使其在国内的测量界拥有广大的用户。

2、复数的基础知识 复数Z被定义为二元有序实数对(a,b),记为z=a+bi,这里ab是实数,i是虚数单位,且 ab是任意实数

在复数a+bi中,a=Re(z)称为实部,b=Im(z)称为虚部。当虚部等于零时,这个复数可以视为实数;当z虚部不等于零时,实部等于零时,常称z纯虚数

  Casio Fx-9750 G II SD上, 复数Z的实部记作ReP z=a,复数z虚部记作 ImP z=b3.

在一个平面上建立直角坐标系--测量坐标系。工程上通常采用的是高斯平面直角坐标系,坐标轴x轴,X轴与中央子午线平行,并规定向北(向上)为正方向;赤道是横坐标轴,为Y轴,并规定向东(向右)为正方向;两轴的交点为坐标原点;角度从纵坐标轴(x轴)的正向开始按顺时针方向量取,象限也按顺时针编号高斯平面直角属于左手坐标系,它与数学上的坐标系(右手坐标系)坐标轴的指向不同,后者坐标系的X轴的正向指向正东,Y轴的正向指向正东。建立了直角坐标系来表示复数的平面叫做复平面(也称为高斯平面)x轴叫做实轴,y轴除去原点的部分叫做虚轴,原点表示实数0。复平面内的每一个点,有唯一的一个复数和它对应,反过来,每一个复数,有复平面内唯一的一个点和它对应,所以复数集C和复平面内所有的点所成的集合是一一对应的。

将复数的实部与虚部的平方和的正的平方根的值称为该复数的模,记作 Abs Z=z.

即对于复数  ,它的模

Abs Z=

根据极坐标与三角函数的关系,复数z可以写成

  .rz的模,即r = |z|; θz的辐角,记作: Argz)。在0间的辐角称为辐角主值,记作: argz)。Casio Fx-9860 G II SD上幅角的符号Arg Z。任意一个不为零的复数  的辐角有无限多个值,且这些值相差的整数倍。把适合于-π≤θ<π的辐角θ的值,叫做辐角的主值,记作argz。辐角的主值是唯一的。在测量坐标系中,幅角从X轴的正向起算,顺时针方向为正,反之为负。 设复数Z的幅角为θ,其对应的向量的坐标方位角为A,则复数的幅角与测量上的坐标方位角的关系为:如果幅角θ>0 arg  z=θ=A,如果arg  z<0,θ+360=A

复数的表示法 复数有多种表示方法,比如代数表示法、

三角表示法、指数表示法、几何表示法、向量表示法等等,此处仅介绍与本文相关的极坐标表示法,即 Z=rθ,其中rθ分别Z的模和幅角。在Casio Fx-9860GII SD电算器上,输入“∠”的方法:先按【SHIFT】(黄色)键,再按【X,θ T】键。 需要注意的是,幅角为θ的单位向量的复数表示为

1∠θ

3、复数的乘法与平面直角坐标变换(平移和旋转)

  复数的运算 在本文中,只涉及到复数的加法和乘法。两个复数相加的和为一复数,是将两复数的实部和虚部分别相加。复数的相加减等同于平面直角坐标变换中的平移。把两个复数相乘,类似两个多项式相乘,结果中i²= -1,把实部与虚部分别合并。两个复数的积仍然是一个复数。设复数z1z2的三角形式分别为r1(cosθ1+isinθ1)和r2(cosθ2+isinθ2),那么z1z2=r1r2[cos(θ1+θ2)+isin(θ1+θ2)](在复数平面内为模相乘,角相加)。 任意两个复数z1=r1(cosθ1+isinθ1)z2=r2(cosθ2+isinθ2)相乘,它们的积可用几何方法得出先分别作与z1z2对应的向量OZ1OZ2,然后把向量OZ1时针方向旋转一个角θ2(注:测量上的坐标方位角从X轴的正向起算,时针方向旋转到某直线的角度。在数学上则相反,正角时逆时针旋转),再把它的伸长(rz>1)或缩短。当其中一个复数的模为1时,那么两复数相乘等同于平面直角坐标变换的旋转【2】。设原坐标系为O-XY,新坐标系为O-XY’,两坐标系同为左手坐标系或同为右手坐标系,O’点在O-XY坐标系的复数坐标为KX轴在O-XY中的坐标方位角为J,点ZO-XY’中为(X+Yi),那么Z点在O-XY中的坐标可通过直角坐标变换的平移和旋转求得【5】,可简洁地用公式表示为:

X+Yi×1∠J+K

三、求两直线交点的有关公式 设复平面上有A、B、C、D四点,其坐标表示为(X+Yi)i,j=1,2,3,4,求连线AB、CD的交点E的复数坐标X。

A点为新坐标系的原点,A、B的连线为X′轴,Y′轴与X′组成左手坐标系1-X′Y′,如图1所示。

显然,在这一坐标系下,A、B点的复数坐标分别为(0+0i)和(Abs(B-A)+0i)。设J为A、B连线在原坐标系中的坐标方位角,J′为CD连线在原坐标系中的坐标方位角,即J=Arg(B-A)以及J′=Arg(D-C),那么C、D点连线在A-X′Y′坐标系中的方位角为F=(J′-J),如果F<0,则F=F+360,使F恒为正数。

C、D两点在A-X′Y′坐标系中的坐标可表示为

(X+Yi)j′=((X+Yi)j-(X+Yi)1)×1∠(-J), j=3,4

 

C、D点连线在A-X′Y′坐标系中的点斜式方程为

Y′-Y′3=TanF(X′-X′3)     ……….     (1)

34(CD)连线与X′轴交点即是所求的交点,因其在X坐标轴上,故E在A-X′Y′坐标系中的坐标为(X+0i)′,代入(1)式,即得交点E的在A-X′Y′坐标系中的坐标:

X′=X′3-Y3′÷Tan(F )

通过坐标变换最终得到交点在原坐标系中的坐标为

X′×1∠J+(X+Yi)1    ………..    (2)

按以上算法,编写Casio-Fx 9860 Gii SD程序如下:

Deg:Fix 4

Lbl 1:“A(X+Yi)=”?→A: “B(X+Yi)=”?→B:“C(X+Yi)=”?→C:“D(X+Yi)=”?→D  ‘输入已知点复数坐标

Arg(B-A)→J:If J<0:then J+360→J:Ifend ‘求αAB

Arg(D-C)→K

If K<0:then K+360→K:Ifend   ‘αCD

K-J)→F:If F<0:then F+360→F:Ifend ‘求AB、CD间的夹角

Tan F)→F  ‘求CD在A-X′Y′坐标系中的斜率

C-A)×1∠(-J)→P ‘将C点(3点)的坐标换算成A-X′Y′坐标系中的坐标

ReP P-ImP P÷F→X ‘求交点E在A-X′Y′坐标系中的坐标

X×1∠J+A→Y   ‘将交点E在A-X′Y′坐标系中的坐标换算成原坐标系中的坐标

“E(X+Yi)=”:Y▲ ‘显示交点坐标

Goto1

四、应用实例--铁路桥梁曲线布置桥台承台中心坐标的计算

桐木溪大桥位于某客货共线双线铁路上,其0#台为曲线布置(左转),线路左线为主线,左、右线在该桥台处的线间距为4.53米,其承台和桩基的尺寸如下图所示。计算桩基中心和承台角点的放样坐标的关键之一,是求得该承台中心的坐标【4】。

 

 

与墩的承台中心计算不同的是:墩承台中心的计算相对简单,只要在有线路计算程序的计算器上输入该墩梁缝分界线的里程(如果没有纵向预偏心的话)、左右线间距、偏心值E即可,且承台的纵向护桩方向线即为该点处的切线方位角。而桥台的设计图上只给出曲线桥台之台尾和台前处的偏距E(通常台尾和台前的E值不同),没有给出承台中心里程处的E值,故其中心不能直接计算。其计算步骤为:根据设计图上所给里程、线间距、E值分别计算台尾、台前的线路中心点E1E2的坐标,设其复数坐标为( X +Yi)j(j=1,2);根据承台中心里程计算主线(左线)的中桩C3、左(或右)边桩D4(比如左边偏距为5米)的复数坐标(( X +Yi)k(k=3,4);求E1E2连线与C3D4连线之交点,即得承台中心的坐标。

该台的E1、E2、C3、D4坐标用复数分别表示为:

E1=7873.3766+8175.159i,E2=7872.7166+8180.6719i,

C3=7875.1822+8179.2621i,D4=7880.1447+8179.8733i

利用所编程序计算得两条连线的交点E,就是承台中心之坐标:E=2472.9188+4678.9833i

上述结果与通过解相应的二元一次方程组的结果完全相同,证明所推公式及编程正确无误。

五、结语 本文所研究求解两直线交点的坐标的算法,通过坐标变换把原坐标系的两个未知数(即交点的X,Y坐标)减少为在新坐标系中的一个未知数(即交点在新坐标系中的X’),再使用坐标逆变换,求得交点在原坐标系中的坐标X、Y。此算法以独特的思路,把传统的通过解二元一次方程组求两直线交点坐标的问题,转化为一元一次方程的求解,使计算大为简便,并且程序更为简单,占用计算器的内存大大减少;通过实例,说明所推出的公式正确,解算结果准确无误。

参考文献

1、赵树嫄。线性代数(M)。中国人民大学出版社。北京,1996年1月:27-28

2、西安交通大学高等数学教研室。工程数学:复变函数(M)。高等教育出版社,2005年11月第4版:12-15

3、覃辉,段长虹CASIO fx-9750G图形机编程原理与线路施工测量程序(M)。黄河水利出版社,2012.02(第1版):0-50.

4、铁道部第二勘测设计院主编。铁路测量手册(M)。中国铁道出版社,2006年7月第4版:589-590

5、崔炳光,孙护,朱肇光。摄影测量学(M)。测绘出版社,1986年06月第1版:66-74

 

作者简介:

龙汉(男,汉族,1975-01-05出生,讲师,工程硕士,主要从事公路、铁路桥梁、工程测量、测量平差、工程监理等方面的教学与研究)

                 

本刊创刊于1982年,是由自治区科技厅主管、自治区科技信息研究院主办,由自治区科技情报学会协办、国内外公开发行的省级综合性科技刊物,是反映内蒙古自治区科技与经济发展的窗口。杂志入选《中国期刊全文数据(CJFD)》全文收录期刊和《中国学术期刊综合评价数据(CAJCED)统计刊源期刊,《中国核心期刊(遴选)数据库》收录。本刊是公开发行的综合性科技期刊,为月刊,大16开本。本刊坚持以科技创新为目标,融科技、经济、信息、产业、市场为一体,是促进科技成果转化、推动科技进步、加强技术创新,促进经济发展的专业性期刊。