国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MFC和OpenGL的三維車載導(dǎo)航系統(tǒng)

2015-12-22 00:52:28劉旭東,葛俊杰

基于MFC和OpenGL的三維車載導(dǎo)航系統(tǒng)

劉旭東1,2,葛俊杰2

(1.煙臺職業(yè)學(xué)院 科研處,山東 煙臺 264670;2. 煙臺職業(yè)學(xué)院 信息工程系,山東 煙臺 264670)

摘要:近年來,隨著我國經(jīng)濟(jì)的迅猛發(fā)展,城市機(jī)動(dòng)車的數(shù)量和交通流量不斷增加,交通堵塞頻繁發(fā)生,給人們的出行帶來極大的不便。因此,開發(fā)設(shè)計(jì)一種智能車載導(dǎo)航定位系統(tǒng),是實(shí)現(xiàn)我國道路智能化管理的迫切需要。系統(tǒng)采用Visual C++設(shè)計(jì),使用SQL SERVER為后臺數(shù)據(jù)庫,使用OpenGL進(jìn)行三維場景繪制。不僅提供了傳統(tǒng)車載導(dǎo)航所需的最優(yōu)路徑查詢、語音提示以及信息查詢等功能,還實(shí)現(xiàn)了測距、智能返航、行駛過程視角轉(zhuǎn)換以及新增點(diǎn)等功能。

關(guān)鍵詞:GIS;車載導(dǎo)航;MFC;OPENGL

收稿日期:2015-08-11

作者簡介:劉旭東(1976-),男,山東龍口人,煙臺職業(yè)學(xué)院科研處副教授,碩士.

中圖分類號:U46

1系統(tǒng)可行性分析

現(xiàn)代人對于車載導(dǎo)航系統(tǒng)已經(jīng)不是很陌生,汽車導(dǎo)航系統(tǒng)為地球表面上每一塊土地提供了一個(gè)全新的、瞬時(shí)可知的地址,而且通過GIS/GPS的應(yīng)用,該智能車載導(dǎo)航定位系統(tǒng)基本包含了現(xiàn)有車載導(dǎo)航系統(tǒng)的全部功能,主要包括導(dǎo)航功能、語音提示功能、測速功能、測距功能、智能返航、在虛擬環(huán)境中應(yīng)用模擬車載系統(tǒng)、交互式視角轉(zhuǎn)換、信息查詢功能、新增點(diǎn)功能等。

1.1 技術(shù)可行性分析

人工智能的普及與掌握,如算法分析,語音識別等,使軟件開發(fā)工作變得日益簡單。使用MicrosoftVC++6.0開發(fā)環(huán)境,利用3dmax與OpenGL等開發(fā)技術(shù),開發(fā)過程不是很長且難度適中。

1.2 經(jīng)濟(jì)可行性分析

本系統(tǒng)是在OpenGL技術(shù)基礎(chǔ)上開發(fā)的三維車載導(dǎo)航系統(tǒng),利用宿舍和機(jī)房電腦,圖書館等方便的資源,不需要太多人力和物力就可以設(shè)計(jì)并實(shí)現(xiàn),考慮到整個(gè)系統(tǒng)所需要的硬件和軟件環(huán)境,本系統(tǒng)的投資較小,具有經(jīng)濟(jì)上的可行性。

1.3 開發(fā)及應(yīng)用環(huán)境

VisualC++6.0是微軟公司推出的開發(fā)Windows環(huán)境下面向?qū)ο蟮目梢暬晒ぞ?。它提供了功能?qiáng)大的MFC類庫,開發(fā)者只需做少量的工作就可以得到功能齊全的Windows應(yīng)用程序。MFC使編程工作變得更加輕松容易。

SQLServer是基于客戶機(jī)/服務(wù)器(Client/Server)模型的新一代大型關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(DBMS),為企業(yè)的數(shù)據(jù)管理提供強(qiáng)大的支持,它在電子商務(wù)、數(shù)據(jù)庫解決方案和數(shù)據(jù)倉庫等應(yīng)用中起著重要的作用。它可以將VB、VC++作為客戶端開發(fā)工具。隨著其產(chǎn)品性能的不斷改善和擴(kuò)大,SQLServer在數(shù)據(jù)庫系統(tǒng)領(lǐng)域已經(jīng)占有非常重要的地位。

OS:Windows2000以上(Vista除外),編譯和測試軟件:VisualC++6.0(提供編程環(huán)境,編譯環(huán)境),輔助庫:OpenGL庫。

2設(shè)計(jì)技術(shù)簡介

OpenGL是OpenGraphicsLib的縮寫,是一套三維圖形處理庫,也是該領(lǐng)域的工業(yè)標(biāo)準(zhǔn)。OpenGL是科學(xué)計(jì)算、專業(yè)圖形處理等高端應(yīng)用領(lǐng)域的標(biāo)準(zhǔn)圖形庫。它被設(shè)計(jì)成獨(dú)立于窗口、獨(dú)立于硬件,運(yùn)行在具有操作系統(tǒng)的各類計(jì)算機(jī)上,在網(wǎng)絡(luò)環(huán)境下以客戶機(jī)/服務(wù)器(Client/Server)模式工作。

3dsMax(原名:3DStudioMax),是Autodesk傳媒娛樂部開發(fā)的、運(yùn)行在Win32和Win64平臺上的全功能三維計(jì)算機(jī)圖形軟件。它首先開始運(yùn)用在電腦游戲中的動(dòng)畫制作,后來更進(jìn)一步開始參與影視片的特效制作,例如最后的武士,X戰(zhàn)警II等。除外,朱邦復(fù)工作室所開發(fā)的“導(dǎo)演平臺”也是以Plug-In方式建立在這個(gè)軟件上。

3系統(tǒng)概要設(shè)計(jì)

融合三維虛擬場景漫游和電子交通GIS系統(tǒng),將兩者巧妙的聯(lián)系在一起,使用戶在更加逼真的三維場景中,實(shí)現(xiàn)交通信息的查詢,測速,測距,智能導(dǎo)航等二維電子地圖應(yīng)有的功能;并提供第一人稱與第三人稱視角的切換功能,從而達(dá)到漫游與導(dǎo)航雙重功能的實(shí)現(xiàn);全程語音提示,使得用戶使用更加方便。另外,本系統(tǒng)還有收音機(jī)、音樂播放等功能。

車載導(dǎo)航系統(tǒng)實(shí)現(xiàn)如下功能:導(dǎo)航、語音提示、測速、測距、智能返航、虛擬環(huán)境模擬車載導(dǎo)航系統(tǒng)、新增點(diǎn)、視角轉(zhuǎn)換、信息查詢、音樂、收音機(jī)等。根據(jù)這些功能,系統(tǒng)可分為以下8個(gè)模塊:

①GIS操作模塊,主要包括導(dǎo)航、測距、測速、電子地圖放縮及移動(dòng)、智能返航等功能;

②語音提示模塊,主要包括全程轉(zhuǎn)向及重要建筑物提示功能;

③三維場景生成模塊,三維場景的顯示;

④虛擬場景漫游模塊,在虛擬環(huán)境模擬車載導(dǎo)航系統(tǒng)功能;

⑤信息查詢模塊,一定范圍信息查詢、制定地點(diǎn)信息查詢、最短路徑查詢等三種信息查詢方式;

⑥新增點(diǎn)模塊,在電子地圖上實(shí)現(xiàn)點(diǎn)的添加功能;

⑦音樂播放模塊,播放音樂功能;

⑧車內(nèi)儀表盤模塊,汽車速度指針及發(fā)動(dòng)機(jī)轉(zhuǎn)速指針的偏轉(zhuǎn)。

語音提示模塊、信息查詢模塊的最短路徑查詢以及GIS模塊的導(dǎo)航功能、智能返航功能都要共享同一個(gè)最短路徑關(guān)鍵點(diǎn)數(shù)組。

數(shù)據(jù)庫表的描述:

①Detail表——存儲(chǔ)場景中建筑物的詳細(xì)信息:編號、坐標(biāo)、建筑物的長度和寬度,最近路的坐標(biāo)等,用于輸入查詢,Detail見表1。

②KeyPoint表——存儲(chǔ)路上的關(guān)鍵點(diǎn)的信息:編號和坐標(biāo),用于最短路徑和智能返航,KeyPoint見表2。

③Point表——存儲(chǔ)路上的信息點(diǎn),用于最短路徑,Point見表3。

④Road表——存儲(chǔ)路的信息,編號,起始點(diǎn)和終點(diǎn)的坐標(biāo),以及路的名稱。用于輸入查詢,Road見表4。

表1Detail表表2KeyPoint表

表3  Point表                表4  Road表

4系統(tǒng)實(shí)現(xiàn)

4.1 啟動(dòng)界面

由于場景較大,加載時(shí)間比較長,增加啟動(dòng)動(dòng)畫過程,使客戶既可以對我們的系統(tǒng)有一個(gè)大概的了解,又使客戶不會(huì)在這段時(shí)間感到枯燥。該啟動(dòng)畫面的實(shí)現(xiàn)我們采用雙線程同時(shí)運(yùn)行,啟動(dòng)界面如圖1所示:

圖1 啟動(dòng)界面

4.2 最短路徑

最短路徑是車載導(dǎo)航系統(tǒng)最基本的功能之一,我們提供了最終最短路徑的尋求方式:①當(dāng)前點(diǎn)到任意點(diǎn)最短路徑,②任意兩點(diǎn)的最短路徑。這兩種最短路徑的實(shí)現(xiàn)原理是一樣的,即:首先在二維電子地圖上選取點(diǎn)(根據(jù)不同的需求選擇一個(gè)或兩個(gè)),然后查詢數(shù)據(jù)庫得到選擇點(diǎn)的序號,再調(diào)用計(jì)算最短路徑函數(shù)ShortPath(intstart,intend)計(jì)算最短路徑上的關(guān)鍵點(diǎn),最后繪制計(jì)算出的最短路徑。如圖2所示:

圖2 最短路徑

主要代碼如下:

//查詢中間點(diǎn)的過程用到了DIKSTRA算法,但做了一定改進(jìn),即最短路徑的關(guān)鍵點(diǎn)按順序輸出,方便最短路徑的顯示

for(w=1;w<=200;w++)

if(final[w]==0&&min

{

D[w]=min+G.arcs[v][w];

for(j=1;j<=200;j++)

{

BeginLink[w][j]=BeginLink[v][j];

if(w==end)

{

if(BeginLink[v][j]==1)//如果j是最短路徑上的點(diǎn),應(yīng)當(dāng)知道它是第幾個(gè),從而按順序按順尋顯示

order[final[j]]=j;

else

order[final[j]]=0;

}

}BeginLink[w][w]=1;

}

4.3 智能返航

智能返航功能是客戶在選擇最短路徑后,系統(tǒng)自動(dòng)記錄行駛軌跡,待用戶想沿原始路線返回時(shí),啟動(dòng)“智能返航”,即可繪制出用戶的行車路線。如圖3所示:

圖3 智能返航

主要代碼如下:

if(g_DrawCurrent==6)//記錄終點(diǎn)并執(zhí)行畫線

{

if(m_bFindEnd)

{

m_bFindEnd=false;

m_NavKeyPoint[++m_NavLast].x= (int) (CCamera::m_Position.x*240/1000);

m_NavKeyPoint[m_NavLast].y= (int) (240+CCamera::m_Position.z*240/1000);

}

CPenpen(PS_SOLID, 2,RGB(248, 7, 0));

CPen*oldpen=ht.SelectObject(&pen);

ht.MoveTo((int)(m_NavKeyPoint[0].x*blc/240+m_xStart),(int)(m_NavKeyPoint[0].y*blc/240+m_yStart));

…}

4.4 信息查詢

圖4 信息查詢

輸入查詢是車載導(dǎo)航系統(tǒng)的基本功能之一,用戶可以在不確定目的地點(diǎn)的情況下,查詢兩點(diǎn)之間的最短路徑;另外可以進(jìn)行一定范圍的信息查詢,也可以查詢特定地點(diǎn)的地理位置。信息查詢對話框如圖4所示:

三種查詢方式的實(shí)現(xiàn)原理是一樣的,即首先獲得Combobox的信息,再根據(jù)相應(yīng)要求做計(jì)算,最后在二維電子地圖上繪制出需要顯示的信息。下面以范圍信息查詢?yōu)槔f明實(shí)現(xiàn)原理。

主要代碼如下:

intrange=atoi(RangeStr);

if(m_DetailSet.Open())

{

m_DetailSet.MoveFirst();

while(!m_DetailSet.IsEOF())//根據(jù)類型距離判斷目標(biāo)信息

{

if(m_DetailSet.m_Type==g_ContentType&&sqrt((g_point.x-m_DetailSet.m_CenterX)*(g_point.x-m_DetailSet.m_CenterX)+(g_point.y-m_DetailSet.m_CenterY)*(g_point.y-m_DetailSet.m_CenterY))

g_SelectArr[g_t++]=m_DetailSet.m_ID;

m_DetailSet.MoveNext();

}

g_ContentType=0;

m_DetailSet.Close();

}

4.5 語音提示

語音提示也是車載導(dǎo)航系統(tǒng)的常用功能之一。我們的語音提示主要用于兩個(gè)方面,一是轉(zhuǎn)彎語音提示,二是重要建筑物提示。轉(zhuǎn)彎語音提示的實(shí)現(xiàn)原理是根據(jù)當(dāng)前點(diǎn)判斷汽車是否轉(zhuǎn)向,如果判斷出轉(zhuǎn)向,調(diào)用需要轉(zhuǎn)向的語音;重要建筑物提示的實(shí)現(xiàn)原理是根據(jù)將二維電子地圖上的建筑物劃分為不同的區(qū)域,當(dāng)汽車第一次進(jìn)入該區(qū)域時(shí),調(diào)用此區(qū)域的語音。

主要代碼如下:

CStringstrz="SoundData/10z.mp3";

CStringstry="SoundData/10y.mp3";

if(c<=1.0f)

{

d=m_TempPoint3.y-m_TempPoint2.y;

if(a>=0)

{

if(d<-5&&m_bPlay) //左拐

{

m_Mp3Music.Play(strz);

m_bPlay=false;

}

elseif(d>5&&m_bPlay) //右拐

{

m_Mp3Music.Play(stry);

m_bPlay=false;

}

}

else

…}

5系統(tǒng)測試及結(jié)果分析

5.1 系統(tǒng)測試

系統(tǒng)的測試嚴(yán)格遵循軟件測試中的測試原則,系統(tǒng)采用黑盒的方法,讓程序設(shè)計(jì)之外的人員,在事先不了解程序設(shè)計(jì)的邏輯結(jié)構(gòu)的條件下,以隨機(jī)方式進(jìn)行導(dǎo)航、語音提示、測速、測距、智能返航、虛擬環(huán)境模擬車載導(dǎo)航系統(tǒng)、新增點(diǎn)、視角轉(zhuǎn)換、信息查詢、音樂、收音機(jī)等操作。經(jīng)過進(jìn)行反復(fù)的測試和修改,使系統(tǒng)功能逐步完善。

5.2 結(jié)果分析

系統(tǒng)網(wǎng)站開發(fā)環(huán)境采用VisualC++6.0和SQLServer數(shù)據(jù)庫。系統(tǒng)安裝方便簡潔,運(yùn)行安全可靠。系統(tǒng)的功能基本達(dá)到預(yù)期目標(biāo),在三維場景中實(shí)現(xiàn)了傳統(tǒng)車載導(dǎo)航系統(tǒng)的的各種功能,也可實(shí)現(xiàn)在三維場景中漫游,具有一定的借鑒和參考價(jià)值。

6結(jié)束語

開發(fā)設(shè)計(jì)的三維空間模擬車載導(dǎo)航系統(tǒng)已經(jīng)基本實(shí)現(xiàn)了導(dǎo)航、語音提示、測速、測距、智能返航、虛擬環(huán)境模擬車載導(dǎo)航系統(tǒng)、新增點(diǎn)、視角轉(zhuǎn)換、信息查詢、音樂、收音機(jī)等功能,實(shí)現(xiàn)了程序最初的設(shè)計(jì)目標(biāo),適合在實(shí)際中應(yīng)用。

參考文獻(xiàn):

[1]徐明亮,盧紅星,王晚.OpengGL游戲編程[M].北京:機(jī)械工業(yè)出版社,2008.

[2]侯俊杰.深入淺出MFC(第二版)[M].武漢:華中科技大學(xué)出版社,2001.

[3]陳建春.VisualC++ 開發(fā)GIS系統(tǒng)(第2版)[M].北京:電子工業(yè)出版社,2004.

[4]殷人昆,陶永雷,謝若陽,盛徇華.數(shù)據(jù)結(jié)構(gòu)——用面向?qū)ο蠓椒ㄅcC++描述[M].北京:清華大學(xué)出版社,2006.

[5]高恩婷.基于VC++的OpenGL三維應(yīng)用程序的設(shè)計(jì)[J]. 蘇州大學(xué)學(xué)報(bào)(自然科學(xué)版),2007(4).

[6]周揚(yáng),劉永濤.基于OpenGL的事故三維綜合演示平臺[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2015(4).

[7]程飛.基于MFC與OpenGL的可視化機(jī)械仿真設(shè)計(jì)系統(tǒng)[J].五邑大學(xué)學(xué)報(bào)(自然科學(xué)版),2014(3).

(責(zé)任編輯侯中巖)

鹤岗市| 荥阳市| 什邡市| 新津县| 河西区| 新乡市| 通道| 深泽县| 孟津县| 凤庆县| 大连市| 信丰县| 志丹县| 阜阳市| 江西省| 百色市| 津市市| 闵行区| 太仆寺旗| 铅山县| 阿拉善左旗| 梨树县| 屏东市| 沙洋县| 新民市| 宜君县| 永丰县| 黄陵县| 绍兴市| 焉耆| 新安县| 南安市| 天气| 江西省| 古蔺县| 敦煌市| 长兴县| 青阳县| 通化市| 皮山县| 保亭|