伍祥榮
摘要:文章通過(guò)對(duì)跑道縱坡數(shù)學(xué)研究并利用VS2010編程技術(shù)解決了跑道視距檢查問(wèn)題。在已知跑道各段坡度、坡長(zhǎng)和變坡豎曲線曲率半徑或者已有道面各分塊高程后,通過(guò)建立平面坐標(biāo)系,分析跑道各坡段方程、連接相鄰坡段之間的豎曲線方程和視線方程后,設(shè)計(jì)出跑道視距檢查程序。通過(guò)試驗(yàn),設(shè)計(jì)出的跑道視距檢查程序不僅能檢查新建跑道視距問(wèn)題,而且能檢查已有道面跑道視距問(wèn)題。
關(guān)鍵詞:跑道視距;視距檢查;平面坐標(biāo)系;編程技術(shù)
中圖分類號(hào):V351文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-2374(2014)24-0095-04
在民用機(jī)場(chǎng)飛行區(qū)地勢(shì)設(shè)計(jì)中,跑道縱斷面設(shè)計(jì)對(duì)整個(gè)機(jī)場(chǎng)土石方量影響非常大,特別在西南地區(qū)修建機(jī)場(chǎng),跑道縱坡對(duì)整個(gè)機(jī)場(chǎng)的投資影響更為明顯。在縱斷面設(shè)計(jì)中,通常會(huì)根據(jù)原地形走勢(shì)分段設(shè)計(jì)縱坡,這就不可避免地需要進(jìn)行跑道視距檢查。
本文通過(guò)分析跑道各個(gè)坡段坡度、坡長(zhǎng)及變坡豎曲線曲率半徑之間的數(shù)學(xué)關(guān)系,推導(dǎo)出了跑道縱斷面上各點(diǎn)的高程,然后比較跑道縱斷面高程和相應(yīng)段的視線高程之間的大小,根據(jù)大小判斷跑道視距是否滿足要求。
1跑道縱斷面高程分析
1.1求各坡段的方程
在進(jìn)行跑道縱斷面設(shè)計(jì)中,通常先設(shè)計(jì)出每一段的坡度和坡長(zhǎng),即坡度和坡長(zhǎng)已知。設(shè)第一坡段的坡長(zhǎng)和坡度分別為pc1和pd1(升坡為正,降坡為負(fù)),……第n坡段的坡長(zhǎng)和坡度分別為pcn和pdn。
通過(guò)建立平面坐標(biāo)系,定義第一坡段的起點(diǎn)為(x0,y0)=(0,0),終點(diǎn)為(x1,y1),通過(guò)兩點(diǎn)式方程可知第一坡段的平面方程為:
(y-y0)/(x-x0)=(y1-y0)/(x1-x0)
pd1=(y1-y0)/(x1-x0)
x1=pc1
y1=pc1×pd1
經(jīng)整理:y=pd1×(x-x0)+y0
第n坡段的起點(diǎn)為(xn-1,yn-1),終點(diǎn)為(xn,yn),通過(guò)兩點(diǎn)式方程可知第n坡段的平面方程為:
y=pdn×(x-xn-1)+yn-1
xn=pci
yn=(pci×pdi)
1.2求連接各坡段的豎曲線方程
要想求得連接各坡段的豎曲線方程,必先求出豎曲線的圓心坐標(biāo),設(shè)連接第n-1段跑道和n段坡段的豎曲線半徑為Rn、圓心坐標(biāo)為(Onx,Ony)。分以下兩種情況:
1.2.1當(dāng)pdn-1<pdn,即后一坡段的坡段大于前一坡段的坡度時(shí),連接這兩坡段的豎曲線為凹曲線。豎曲線圓心坐標(biāo)為以下兩條直線的交點(diǎn):
y=pdn-1(x-xn-2)+yn-2+Rn(1+pdn-12)0.5
y=pdn(x-xn-1)+yn-1+Rn(1+pdn2)0.5
即:
Onx=[pdnxn-1-pdn-1xn-2+Rn(1+pdn-12)0.5-Rn(1+pdn2)0.5+yn-2-yn-1]/(pdn-pdn-1)
Ony=pdn-1{[pdnxn-1-pdn-1xn-2+Rn(1+pdn-12)0.5-Rn(1+pdn2)0.5+yn-2-yn-1]/(pdn-pdn-1)-xn-2}+yn-2+Rn(1+pdn-12)0.5
1.2.2當(dāng)pdn-1>pdn,即后一坡段的坡段小于前一坡段的坡度時(shí),連接這兩坡段的豎曲線為凸曲線。豎曲線圓心坐標(biāo)為以下兩條直線的交點(diǎn):
y=pdn-1(x-xn-2)+yn-2-Rn(1+pdn-12)0.5
y=pdn(x-xn-1)+yn-1-Rn(1+pdn2)0.5
即:
Onx=[pdnxn-1-pdn-1xn-2-Rn(1+pdn-12)0.5+Rn(1+pdn2)0.5+yn-2-yn-1]/(pdn-pdn-1)
Ony=pdn-1{[pdnxn-1-pdn-1xn-2-Rn(1+pdn-12)0.5+Rn(1+pdn2)0.5+yn-2-yn-1]/(pdn-pdn-1)-xn-2}+yn-2-Rn(1+pdn-12)0.5
1.2.3求豎曲線方程。在已知圓心坐標(biāo)及圓半徑的情況下,圓的方程為:
(x-Onx)2+(y-Ony)2=Rn2
1.3求豎曲線與其前坡段和后坡段的交點(diǎn)
1.3.1豎曲線與其前坡段的交點(diǎn)。設(shè)連接第n-1段坡段和n段坡段的豎曲線On,則On和第n-1段坡段的交點(diǎn)為下列兩直線的交點(diǎn)(xnq,ynq):
y=pdn-1×(x-xn-2)+yn-2
y=(Onx–x)/pdn-1+Ony
xnq=(Ony+Onx/pdn-1+pdn-1xn-2-yn-2)/(pdn-1+1/pdn-1)
ynq=pdn-1×[(Ony+Onx/pdn-1+pdn-1xn-2-yn-2)/(pdn-1+1/pdn-1)-xn-2]+yn-2
1.3.2豎曲線與其后坡段的交點(diǎn)。設(shè)連接第n-1段坡段和n段坡段的豎曲線On,則On和第n段坡段的交點(diǎn)為下列兩直線的交點(diǎn)(xnh,ynh):
y=pdn×(x-xn-1)+yn-1
y=(Onx–x)/pdn+Ony
即:
xnh=(Ony+Onx/pdn+pdnxn-1-yn-1)/(pdn+1/pdn)
ynh=pdn×[(Ony+Onx/pdn+pdnxn-1-yn-1)/(pdn+1/pdn)-xn-1]+yn-1
2視線高程分析
通過(guò)前面跑道縱斷面高程分析,然后建立一系列方程可以求出跑道縱斷面上各點(diǎn)的高程。
根據(jù)《民用機(jī)場(chǎng)飛行區(qū)技術(shù)標(biāo)準(zhǔn)》(MH5001-2013)6.1.6.2條規(guī)定,當(dāng)跑道縱向變坡不能避免時(shí),應(yīng)具有下列無(wú)障礙視線:
——飛行區(qū)指標(biāo)Ⅱ?yàn)镃、D、E、F的跑道,在高于跑道3m的任何一點(diǎn)能通視至少半條跑道長(zhǎng)度內(nèi)的高于跑道3m的任何其他點(diǎn);
——飛行區(qū)指標(biāo)Ⅱ?yàn)锽的跑道,在高于跑道2m的任何一點(diǎn)能通視至少半條跑道長(zhǎng)度內(nèi)的高于跑道2m的任何其他點(diǎn);
——飛行區(qū)指標(biāo)Ⅱ?yàn)锳的跑道,在高于跑道1.5m的任何一點(diǎn)能通視至少半條跑道長(zhǎng)度內(nèi)的高于跑道1.5m的任何其他點(diǎn)。
設(shè)跑道長(zhǎng)度為pdqc,第n段視線檢查的范圍為(a,b),有b=a+pdqc/2,對(duì)應(yīng)于a點(diǎn)的跑道高程為ya,對(duì)應(yīng)于b點(diǎn)的跑道高程為yb,在高于跑道hm的任何一點(diǎn)能通視至少半條跑道長(zhǎng)度內(nèi)的高于跑道hm的任何其他點(diǎn),則此范圍內(nèi)的跑道視線高程方程為:
y=2(yb-ya)(x-a)/pdqc+ya+h
3視線高程和跑道縱斷面高程的比較
在已知跑道縱斷面高程和相應(yīng)需要檢查段視線高程的基礎(chǔ)上,通過(guò)比較兩者相應(yīng)點(diǎn)的高程,如果視線高程高于跑道縱斷面高程則視距檢查符合要求,反之則視距檢查不符合要求。
4程序設(shè)計(jì)
通過(guò)對(duì)上述分析過(guò)程的整理,采用VS2010編程設(shè)計(jì),完整的實(shí)現(xiàn)了跑道視距檢查問(wèn)題。
程序:
intmain()
{
intmoshi;
cin>>moshi;(輸入視距檢查模式,1為新建工程;2為既有工程)
if(moshi==1)
{
intbpds;//聲明變坡段數(shù)
struct
{
intpc;//坡長(zhǎng)
doublepd;//坡度
}pdpc[100];//記錄坡度和坡長(zhǎng)
cin>>bpds;//輸入變坡段數(shù)
intnum=0;//總坡長(zhǎng)統(tǒng)計(jì)
intbj[50];//聲明豎曲線半徑
intbc;//跑道高程和視線高程比較時(shí)所取的步長(zhǎng)
doublexdg;//相對(duì)于跑道的物體高
struct
{
intx;//橫坐標(biāo)
doubley;//縱坐標(biāo)
}pcdd[100];//坡長(zhǎng)端點(diǎn)坐標(biāo)
FILE*fp2;//記錄坡長(zhǎng)端點(diǎn)坐標(biāo)文 struct
{
intx;//橫坐標(biāo)
doubley;//縱坐標(biāo)
}pdgc[10000];//跑道高程坐標(biāo)
FILE*fp1;//記錄跑道上按步長(zhǎng)寫(xiě)入的點(diǎn)縱橫坐標(biāo)
intp=0;
intb=0;
for(intq=0;q { while(pcdd[q].x<=p&&p<=pcdd[q+1].x&&p<=num) { pdgc[b].x=p; pdgc[b].y=(pcdd[q+1].y-pcdd[q].y)/(pcdd[q+1].x-pcdd[q].x)*(p-pcdd[q].x)+pcdd[q].y; p=p+bc; b=b+1; } } struct { doublex;//橫坐標(biāo) doubley;//縱坐標(biāo) }yxzb[50];//豎曲線圓心坐標(biāo) FILE*fp3;//記錄豎曲線圓心縱橫坐標(biāo) for(intjd=0;jd { if(pdpc[jd+1].pd<=pdpc[jd+2].pd) if(pdpc[jd+1].pd==pdpc[jd+2].pd) else { yxzb[jd].x=(pcdd[jd].x*pdpc[jd+1].pd-pcdd[jd+1].x*pdpc[jd+2].pd+pcdd[jd+1].y-pcdd[jd].y+bj[jd]*(pow((1.0000+pow(pdpc[jd+2].pd,2.0)),0.5)-pow((1.0000+pow(pdpc[jd+1].pd,2.0)),0.5)))/(pdpc[jd+1].pd-pdpc[jd+2].pd); yxzb[jd].y=pcdd[jd].y+pdpc[jd+1].pd*(yxzb[jd].x-pcdd[jd].x)+bj[jd]*pow((1.0000+pow(pdpc[jd+1].pd,2.0)),0.5); } else { yxzb[jd].x=(pcdd[jd].x*pdpc[jd+1].pd-pcdd[jd+1].x*pdpc[jd+2].pd+pcdd[jd+1].y-pcdd[jd].y+bj[jd]*(pow((1.0000+pow(pdpc[jd+1].pd,2.0)),0.5)-pow((1.0000+pow(pdpc[jd+2].pd,2.0)),0.5)))/(pdpc[jd+1].pd-pdpc[jd+2].pd); yxzb[jd].y=pcdd[jd].y+pdpc[jd+1].pd*(yxzb[jd].x-pcdd[jd].x)-bj[jd]*pow((1.0000+pow(pdpc[jd+1].pd,2.0)),0.5); } fprintf(fp3,”%lf
%lf
”,yxzb[jd].x,yxzb[jd].y);//將豎曲線圓心坐標(biāo)寫(xiě)入文件 } struct { doublex;//橫坐標(biāo) doubley;//縱坐標(biāo) }yzzjd[100];//豎曲線與直線的左交點(diǎn)坐標(biāo) struct { doublex;//橫坐標(biāo) doubley;//縱坐標(biāo) }yzyjd[100];//豎曲線與直線的右交點(diǎn)坐標(biāo) FILE*fp4;//記錄豎曲線與直線交點(diǎn)的縱橫坐標(biāo) for(intjd=0;jd { yzzjd[jd].x=(yxzb[jd].y+yxzb[jd].x/pdpc[jd+1].pd+pdpc[jd+1].pd*pcdd[jd].x-pcdd[jd].y)/(pdpc[jd+1].pd+1/pdpc[jd+1].pd);//豎曲線與左邊直線的交點(diǎn)橫坐標(biāo) yzzjd[jd].y=pcdd[jd].y+pdpc[jd+1].pd*yzzjd[jd].x-pdpc[jd+1].pd*pcdd[jd].x;//豎曲線與左邊直線的交點(diǎn)縱坐標(biāo) yzyjd[jd].x=(yxzb[jd].y+yxzb[jd].x/pdpc[jd+2].pd+pdpc[jd+2].pd*pcdd[jd+1].x-pcdd[jd+1].y)/(pdpc[jd+2].pd+1/pdpc[jd+2].pd);//豎曲線與右邊直線的交點(diǎn)橫坐標(biāo) yzyjd[jd].y=pcdd[jd+1].y+pdpc[jd+2].pd*yzyjd[jd].x-pdpc[jd+2].pd*pcdd[jd+1].x;//豎曲線與右邊直線的交點(diǎn)縱坐標(biāo) fprintf(fp4,”%lf
%lf
”,yzzjd[jd].x,yzzjd[jd].y);//寫(xiě)入豎曲線和豎曲線左邊直線的交點(diǎn)坐標(biāo) fprintf(fp4,”%lf
%lf
”,yzyjd[jd].x,yzyjd[jd].y);//寫(xiě)入豎曲線和豎曲線右邊直線的交點(diǎn)坐標(biāo) doublejhz=bc*ceil(yzzjd[jd].x/bc); doublejhy=bc*floor(yzyjd[jd].x/bc); intgzz=(int)ceil(yzzjd[jd].x/bc); while(jhz<=jhy) { if(pdpc[jd+1].pd pdgc[gzz].y=yxzb[jd].y-pow((pow(bj[jd],2.0)-pow((jhz-yxzb[jd].x),2.0)),0.5);//對(duì)兩直線之間的凹圓弧高程重新賦值 else pdgc[gzz].y=yxzb[jd].y+pow((pow(bj[jd],2.0)-pow((jhz-yxzb[jd].x),2.0)),0.5);//對(duì)兩直線之間的凸圓弧高程重新賦值 jhz=jhz+bc; gzz++; } } intbb=0; intqq=num/bc; for(intq=0;q { fprintf(fp1,”%8d
%lf
”,pdgc[q].x,pdgc[q].y); } intpp=qq/2; struct { intx;//橫坐標(biāo) doubley;//縱坐標(biāo) }sxgc[10000];//視線高程坐標(biāo) FILE*fp5;//記錄視線高程的縱橫坐標(biāo) FILE*fp6;//記錄未通過(guò)視距檢查的起始點(diǎn)橫坐標(biāo) for(intq=0;q<=qq/2;q++)//視線高程和跑道高程相比較 { intzhzb=pdgc[q].x; for(intsy=0;sy<=qq/2;sy++) { sxgc[sy].x=zhzb; sxgc[sy].y=2*(pdgc[pp].y-pdgc[q].y)*(sxgc[sy].x-pdgc[q].x)/num+pdgc[q].y+xdg; zhzb=zhzb+bc; fprintf(fp5,”%8d
%lf
”,sxgc[sy].x,sxgc[sy].y); } inttu=q; for(intsk=0;sk<=qq/2;sk++) { if(sxgc[sk].y { cout< fprintf(fp6,”%d
%d
”,q*bc,num/2+q*bc); break; } tu++; } cout<<”正在進(jìn)行檢查,請(qǐng)稍候......”< pp++; } fclose(fp1); fclose(fp2); fclose(fp3); fclose(fp4); fclose(fp5); fclose(fp6); getch(); } else { 省略既有跑道高程的視距檢查 } return0; } 圖1跑道縱坡示意圖 5結(jié)語(yǔ) 通過(guò)對(duì)跑道縱斷面高程和相應(yīng)段視線高程逐一比較,能準(zhǔn)確的判斷跑道視距是否滿足規(guī)范要求,為跑道縱斷面的科學(xué)設(shè)計(jì)奠定了基礎(chǔ)。 參考文獻(xiàn) [1]?民用機(jī)場(chǎng)飛行區(qū)技術(shù)標(biāo)準(zhǔn)(MH5001-2013)[S].