(武警工程學院,陜西 西安 710086)
摘要:該文論述了當今流行的可視化工具Delphi如何與組件式MathImage軟件相結合,以實現(xiàn)對彈藥裝載效果的可視化表示。
關鍵詞:Delphi;Mathimage;彈藥裝載
中圖分類號:TP3文獻標識碼:A文章編號:1009-3044(2009)28-8060-02
Integration of Delphi and the Realization of Ammunition loaded MathImage Visual Effects
CUI Ying
(People's Armed Police Engineering College, Xi'an 710086,China)
Abstract:This paper discusses the visualization tools of today's popular Delphi Component MathImage software how to combine in order to achieve load of ammunition effects of visual representation.
Key words:Delphi; mathimage; ammunition load
當今世界,可視化信息管理是信息系統(tǒng)開發(fā)的一個重要的發(fā)展方向,它改變了信息管理的現(xiàn)有模式,使管理者以直觀的可視化方式,方便、簡捷、清楚地把握信息管理過程,并提供輔助決策支持,使得用戶管理、決策活動變得輕松方便。裝備保障部(分)隊以汽車、火車、飛機和輪船等運輸工具裝載物資時,會遇到各種各樣的問題,其中如何在滿足安全牢固、限高和限重的條件下,使物資堆放、裝載的數(shù)量最多這一優(yōu)化問題,隨著人們追求軍事經濟效益意識的提高逐漸引起人們的重視。
筆者從箱裝彈藥裝載方案的可視化設計方面進行了初步的探討。本文是對Delphi7.0與Mathimage集成開發(fā)方法的創(chuàng)新性嘗試,詳細說明了應用Mathimage實現(xiàn)對彈藥箱裝載情況的可視化表達的方法。
1 系統(tǒng)開發(fā)方式及工具軟件簡介
Delphi是Borland公司面向對象的可視化軟件開發(fā)工具。具有非常強大的功能,可以快速、高效地開發(fā)出基于Windows環(huán)境下的各類程序,尤其是在界面設計、數(shù)據(jù)庫編程等方面具有獨到之處。在Delphi中,專門定義了一組用于繪制圖形的對象和組件,完成一些簡單的圖像功能。利用這些對象、組件的方法,可以方便地繪制各種常用圖形;通過設置它們的屬性,能得到不同風格的圖形。
Mathimage是用于輔助顯示數(shù)學圖像的控件。原產生于TImage控件,后又由TgraphicControl衍生而來,具有較好的控制能力和較高的繪制速度。主要功能包括:二維、三維圖形的繪制,畫筆對象,用以填充圖形顏色的畫刷對象,以及實現(xiàn)圖形和動畫顯示的圖形變換等。提供:①常用操作(放大、縮小、旋轉、移動 );②數(shù)據(jù)綁定;③專題繪圖;④空間分析;⑤查詢分析等功能。
因此,有機的結合這兩種工具,充分發(fā)揮各自的優(yōu)勢,進行彈藥裝載方案的可視化顯示是可行的。設計中以Delphi作為開發(fā)平臺,把 Mathimage作為控件嵌人其中,以SQL Sever作為存儲非空間數(shù)據(jù)屬性的數(shù)據(jù)庫來進行該模塊的實現(xiàn)。
2 Delphi 和 MathImage的實例應用
2.1 加載繪圖要素數(shù)據(jù)
通過彈藥優(yōu)化裝載模塊計算出任務各方案每輛車的裝載方案,形成配載方案裝法表存儲于數(shù)據(jù)庫中,包括每輛車序號,車上所裝物資代碼,物資坐標以及方位。遇過單車配載序號從配載方案描述表中查詢主鍵進行匹配,將得到的唯一記錄中的運載工具識別碼取出從運載工具基本表中查詢主鍵進行匹配,就可得到運載工具名稱和內長、內寬、內高,為運載工具的繪制準備數(shù)據(jù);通過待運物資識別碼從物資基本表中查詢主鍵進行匹配,可得到物資名稱和長、寬、高,再結合配載方案裝法表中的物資左下角坐標和物資方位為物資的繪制準備數(shù)據(jù)。(如表1)
2.2 坐標系的建立
在進行仿真前先要建立坐標系,設置繪圖空間邊長為10的立方體,進而建立坐標系,以立方體的左下角頂點為原點,取x的負向與行駛方向,y的正向為右與行駛方向垂直,z的正向向上。xy平面是運輸工具的水平裝載平面。彈藥箱長邊與x軸平行為順裝,與y軸平行為橫裝。(如圖1)
假設要查看任務名稱為Task1,優(yōu)化裝載方案名稱為Method1,單車配載序號為12的車上裝載情況。根據(jù)單車配載序號12可從數(shù)據(jù)庫多個相互關聯(lián)的表中查出這種運載工具的信息及上面所裝載的各種物資的名稱、左下角頂點的坐標和長、寬、高。
根據(jù)單車配載序號12可查詢語句從數(shù)據(jù)庫的表中查出使用的運載工具是解放CA141載重車,其內長4.7m,內寬2.37m,內高0.92m,然后畫出運載工具,實現(xiàn)代碼如下:
Mathimage1.d3SetWorld(0,0,0,10,10,10);//設置顯示圖形的空間范圍
Mathimage1.pen.Color:=clblue;//指定畫筆顏色為藍色
Marhimage1.pen.Width:=3; //指定畫筆寬度為3
Mathimage1.d3drawBox(0,0,0,Vlength,Vwidth,Vhigth);
//畫出車廂,Vlength,Vwidth,Vhigth分別代表車的長、寬、高
然后根據(jù)已經計算好的彈藥裝載表12中的物資信息逐個畫出車內物資,最終呈現(xiàn)裝載效果圖,實現(xiàn)代碼:
For i:=1 to AdoQuery_AmmoBox.RecordCount do
// AdoQuery_AmmoBox.RecordCount表示車上的彈藥箱數(shù)
Begin
Mathimage1.pen.Color:=clgreen; //設置畫筆顏色為綠色
Mathimage1.pen.Width:=1; //設置畫筆寬度為1
If AdoQuery_AmmoBox[‘裝載方式’]=’1’ then//順裝(橫裝為0)
Begin
Bx:=AdoQuery_Box.fieldbuname(‘長’).asfloat+AdoQuery_AmmoBox[‘物資坐標x’];
By:=AdoQuery_Box.fieldbuname(‘寬’).asfloat+AdoQuery_AmmoBox[‘物資坐標y’];
Bz:=AdoQuery_Box.fieldbuname(‘高’).asfloat+AdoQuery_AmmoBox[‘物資坐標z’];
//計算物資右上角的坐標,坐標分別為左下角的坐標x,y,z加上物資的長、寬、高
Mathimage1.d3drawBox(AdoQuery_AmmoBox[‘物資坐標x’],
AdoQuery_AmmoBox[‘物資坐標y’],
AdoQuery_AmmoBox[‘物資坐標z’],Bx,By,Bz);
//依照位置和尺寸畫出彈藥箱
End;
AdoQuery_AmmoBox.Next; //畫下一個彈藥箱
End;
2.3 實現(xiàn)的流程
圖2為流程圖。
3 結束語
目前,Mathimage在Delphi中的嵌入式編程尚未形成一種模型。但筆者認為 Mathimage和Delphi具備成為一種編程模型的條件。故而將這一概念應用到了彈藥裝載可視化的實踐中,體現(xiàn)了如下意義:
1)實現(xiàn)彈藥裝載的可視化管理
將該裝載可視化模塊運用于軍械保障輔助決策系統(tǒng)中,可以實現(xiàn)彈藥裝載方案的可視化,為決策的直觀性提供有力的支持。
2)建立良好的工作環(huán)境,形成高效的運作體系
為用戶創(chuàng)建良好的數(shù)據(jù)基礎、分析工具和評價技術,從而減輕了用戶的勞動強度,提高工作質量和效率,改善工作條件,完善管理機制,同時在裝備部門和運輸部門內形成高效、協(xié)同的運作體系。
參考文獻:
[1] 謝仕義. 集成Delphi和MapX的數(shù)字化系統(tǒng)設計方法[J]. 計算機應用與軟件,2003.12.
[2] 謝建華,李培錚.基于 Delphi的 Maplnfo地圖集成[J]. 四川測繪,2003.6.