?

基于VBA風螺旋的精確繪制

2016-11-14 02:05田茂鵬,向小軍
中國科技信息 2016年21期
關鍵詞:包絡線夾角圓心

基于VBA風螺旋的精確繪制

AutoCAD是目前世界上應用最為廣泛的圖形處理軟件,由于其靈活性,功能的全面性,受到了全世界應用者的廣泛好評。由于其適用性,以及AutoCAD工作團隊逐年對其修復和補充升級,其軟件功能越來越完備,也能緊跟技術的需要。但是由于其功能的多樣性,不可避免的犧牲了一些功能,其中AutoCAD的算法功能比較薄弱,在轉彎過程中就不能提供繪制風螺旋的功能。而飛行運行在轉彎過程中,不可避免的受到風的影響。在無風影響時,飛機的轉彎飛行軌跡應該是一個正圓,但是由于飛機在高空中飛行,受到風的影響,影響范圍以原軌跡上的點為圓心以風偏離量為半徑,飛機可能在這個區域的任意地方。所以在轉彎保護區需要附加風的影響,由于轉彎過程中風的影響會疊加,保護區會不斷的擴大,最終用包絡線將外邊界包絡才能得到最終保護區。

風螺旋畫法的探究

除RF和FRT航段外,飛機在其它航段中并沒有對風影響進行航跡的修復,在轉彎的過程中為了保護飛機,在凡是涉及到轉彎的過程中,都必須考慮到風對飛機轉彎的影響。在ICAO DOC8168 第二卷中規定了轉彎保護區的兩種畫法:風螺旋和邊界圓,其中邊界圓就是對風螺旋的一種簡易畫法,如何精確的繪制螺旋線,決定著飛行程序設計的準確性。以圖1為例,從a點進入,轉彎半徑為r,轉彎中心為c點,從a開始沿著轉彎方向旋轉θ角度,此時風對飛行影響的偏移量為:Eθ=(θ*W)/R

其中θ為轉過的角度,W是全向風速,R為轉彎率。

其中以b為圓心的圓為全向風的影響范圍,將n個全向風的圓包絡進去,其中最小滿足這一要求的包絡線即為風螺旋線。根據分析知道,該包絡線必須與各個圓相切。將轉彎角度細分得到的包絡線就是精確的風螺旋線。如圖2所示:

圖1 轉彎的細分示意圖

圖2 風螺旋的示意圖

圖3 風螺旋的參數界面

VBA對于風螺旋的實現

風螺旋雖然可以很好的繪制出保護區,但是人工繪制存在很大的難度,甚至是難以實現。采用VBA語言可以精確的繪制出風螺旋。VBA語言可以有效的減少工作量和誤差。

根據風螺旋的影響因素制作出了風螺旋的參數界面如圖3所示。

首先定義常數 :pi=3.141592653, g=9.80665

計算函數gm=gama/180*pi, rr=v*v/g/Tan(gm),R=v/rr/pi*180 在風螺旋計算應用時調用這些函數。

定義風螺旋的旋轉角度,一般定義為270°,也可以根據實際情況來進行定義劃分,在VBA的語言環境中并不能直接定義風螺旋的起止點,在VBA語言環境中通過定義點的斜率來進行定義方向:

startTan(0) = Cos(start_thita / 180 * pi + alpha)

startTan(1) = Sin(start_thita / 180 * pi + alpha)

startTan(2) = 0

endTan(0) = Cos((start_thita - thita_jiaodu_tt) / 180 * pi + alpha)

endTan(1) = Sin((start_thita - thita_jiaodu_tt) / 180 * pi + alpha)

endTan(2) = 0

這樣就定義了旋轉角度是從風螺旋的起始點到結束點。由于在實際應用中,轉彎的角度是任意的,因此插入風螺旋的角度必須與轉彎起始角度一致,因此在實際的過程中要輸入起始轉彎角度。

為了使風螺旋的起始點由人工尋找設定,則必須使風螺旋的起始點是任意點,為了實現這一功能需用到了Getpoint(”輸入插入點:”),這樣你可以在AUTOCAD任意的一點隨意插入起始點。

確定了起始點之后要確定轉彎的圓心,在VBA中找點使用到的函數是PolarPoint,通過PolarPoint函數經過起始點與圓心聯系起來, p1 = ThisDrawing.Utility.

PolarPoint(pt, pi, rr)

根據程序設計規范的規定知道,風螺旋是以轉彎中心為圓心,以轉彎半徑rr為半徑的圓的基礎上加上全向風偏量進行的繪制。由上述可知:

Eθ=θ*W/R。

p1 = ThisDrawing.Utility.PolarPoint(pt, (pi - thita), rr)

來找到第一個點。由此點就找到了第一個風影響的圓,然后以d為圓心以e為半徑畫圓circleObj = ThisDrawing. ModelSpace.AddCircle(d, e),然后找到包絡線的點p1 = ThisDrawing.Utility.PolarPoint(pt, (pi - thita), rr + e)其中需要注意的是,這樣找到的點是不正確的,因為通過此方法找到的點是d1點,通過連接所有d1的包絡線并不能把以d為圓心,以Eθ=θ*W/R為半徑的圓所有點包括進來,所以以點d1為基礎點進行包絡是不正確的,需要找到d2才是正確的點。

關于d2和d1的關系可以根據8168的規定,d1d和d2d之間的夾角為arcsin(w/v)??梢圆扇∽兦鸀橹钡姆椒▉碜C明這一個夾角,如圖二所示,bd是沒有風時候飛機走過的路徑為一條直線。圓圈代表了全向風的影響范圍,那么包絡線應該包絡到d2那一圓的切線點,而不是d1點,d1和d2之間的夾角a就是8168所對應的夾角。根據圖4所示,利用相似三角形原理,d1和d2之間的夾角與bd和bd2之間的夾角都是a。

bd表示飛機無風時候的飛過的距離bd=V*T,r為風的影響范圍r=WT,根據三角形定sin(a)=wt/vt=w/t,即:

a= arcsin(w/v)。

ThisDrawing.Utility.PolarPoint(pt, (pi - thita+arcsin(w/v)), rr+e)。由于VBA中并沒有自帶的反函數,需要自己建造一個函數

FuctionArcsin(x) as double

找到準確的包絡線的點后,利用VBA中的循環語言,For i = 1 To thita_n

thita = 1.5 * pi * i / thita_n

e = thita * w / R

根據情況將轉彎角度分為n分。另外利用擬合線

AddSpline命令將其連接起來就得到了風螺旋線。構造函數的過程可以再簡略點,注意知識產權的保護。

圖4 關于風螺旋夾角的示意圖

圖5 以1°為步長的風螺旋示意圖

圖6 風螺旋的放大后的細節圖

風螺旋精度的驗證

利用所做的方法可以知道,由上述找到的點連接成的擬合線完全將風的影響范圍包裹在里面。并且對于角度和風影響范圍進行了討論,嚴格的按照了飛行程序設計規范的規定制作,保證了風螺旋的正確性,并且由于在計算過程中,并沒有像其他的繪制方式一樣利用復雜的公式,這大大的簡化了繪制的難度和步驟,并且提高了計算的速度。

當n值越大的時候風螺旋的圓也就越密,則風螺旋就越準確。但是當劃分到一定的程度的時候,則運行越慢,系統容易報錯,也是不可取的。只要滿足相應的精度要求就可以。

根據以上的信息設計出的界面如圖5所示,根據實際的情況來輸入轉彎的速度、轉彎坡度、風速、以及根據要求輸入的的分段數n值,運行之后計算轉彎半徑,轉彎率。進行繪制就可以得到風螺旋。以1°為步長,即n為270。完全的滿足了精度的要求如圖五:

通過放大可以得知包絡線完全將風的影響包裹進去,說明制作的風螺旋符合規章的規定是正確的制作方法。如圖6所示。

結束語

文章根據飛行程序設計規范中的提出的風螺旋畫法,驗證推算了切線角度的問題,提出了風螺旋常見錯誤的避免方法,并且實驗了風螺旋任意點,任意點的插入。極大的方便了轉彎保護區的繪制。并且由于在編寫的過程中使用了角度旋轉的方法,而不是根據半徑和角度關系的推算進行的設計,極大的減少了運算的時間。并且避免了運算錯誤的計算,由于其簡便、快捷、準確、靈活的特性在實際的保護區的繪制過程中中得到了廣泛應用。為實現飛行程序保護區的自動繪制解決了關鍵技術。

10.3969/j.issn.1001- 8972.2016.21.036

猜你喜歡
包絡線夾角圓心
基于ISO 14692 標準的玻璃鋼管道應力分析
把脈向量中兩類夾角背景下參數的取值范圍問題
探究鐘表上的夾角
求解異面直線夾角問題的兩個路徑
由橢圓張角為直角的弦所在直線形成的“包絡”
拋體的包絡線方程的推導
以圓周上一點為圓心作圓的圖的性質及應用
如何求向量的夾角
參考答案
四種方法確定圓心和半徑
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合