《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種OpenGL局部縮放算法及應用
一種OpenGL局部縮放算法及應用
來源:微型機與應用2013年第19期
張立成1,張 鴿2
(1.長安大學 信息工程學院,陜西 西安 710064;2.西安中交土木科技有限公司,陜西 西安 7
摘要: 縮放是OpenGL三維模型展示的基本操作之一,一般縮放時由于整個場景圍繞視景體中心縮放,感興趣區域在視圖窗口中的位置會不斷變化甚至離開視景體,需要不斷地執行平移操作,不斷地修正感興趣區域在視圖窗口中的位置,無法集中精力觀察工程計算中模型的變化細節。為了解決該問題,從圖形學角度提出了一種改進的局部縮放算法,實現了用鼠標滾輪縮放模型時,鼠標選擇處的模型不離開視景體而相對視圖窗口的位置保持不變,省去了傳統算法中用戶進行縮放操作時需要不斷進行平移的操作,改進了用戶體驗。該算法在多個可視化項目中得到實際應用,取得了很好的操作體驗。
Abstract:
Key words :

摘  要: 縮放是OpenGL三維模型展示的基本操作之一,一般縮放時由于整個場景圍繞視景體中心縮放,感興趣區域在視圖窗口中的位置會不斷變化甚至離開視景體,需要不斷地執行平移操作,不斷地修正感興趣區域在視圖窗口中的位置,無法集中精力觀察工程計算中模型的變化細節。為了解決該問題,從圖形學角度提出了一種改進的局部縮放算法,實現了用鼠標滾輪縮放模型時,鼠標選擇處的模型不離開視景體而相對視圖窗口的位置保持不變,省去了傳統算法中用戶進行縮放操作時需要不斷進行平移的操作,改進了用戶體驗。該算法在多個可視化項目中得到實際應用,取得了很好的操作體驗。
關鍵詞: 計算機應用;坐標變換; 局部縮放;可視化;視景體

 OpenGL是一個與硬件平臺無關、與系統平臺無關的三維圖形庫,其在三維真實感圖形制作中具有優秀的性能,已經成為高性能的圖形和交互視景處理的標準。OpenGL API由200多個函數組成,主要提供圖形繪制、變換操作、顏色模式、光照、圖像效果增強、位圖和圖像、紋理映射、交互與動畫8個方面的功能。一些跨平臺的三維庫(如OSG)也是建立在OpenGL之上的,對OpenGL的API進行了封裝,利用這些三維庫,開發人員可以開發豐富的交互式應用程序[1-3]。GPU高性能計算的支持,使得OpenGL開發的三維程序運行更加流暢、場景更加逼真[4]。
 OpenGL具有強大的圖形處理功能,包括圖形的平移、旋轉、縮放等。靈活運用OpenGL的這些功能,可以實現很多更復雜的操作。但在一般情況下,當利用OpenGL進行圖形的縮放時,往往是以視景體的中心為縮放中心進行整體縮放[5],該算法雖然在整體上實現了一定的縮放功能,但縮放的過程中,用戶期望的縮放區域會在Windows視圖窗口中不斷變化甚至離開視景體。以放大為例,為了觀察感興趣區域的細節,如模型在外力作用下的變化過程,往往需要借助平移將目標區域移到合適位置后才能繼續放大,在放大達到一定系數時,放大-平移的操作非常頻繁,嚴重影響了操作體驗。參考文獻[6]提出了一種拉框放大算法,計算鼠標框選區域在視景體中的位置,然后將這個位置重新投影到視口上,該算法雖然能夠實現放大,但是不能夠局部縮小,且放大與縮小操作的切換不連貫。本文提出的算法不僅能夠實現局部縮放的效果,而且在操作方法上也作了改進,用戶滾動鼠標的滾輪,默認以光標處的模型為感興趣區域中心,縮放將圍繞該中心進行,而且用戶期望的縮放區域在視景體中原地縮放,縮小和放大操作切換流暢。
1 OpenGL變換的基本原理
 三維模型顯示到二維屏幕的過程分為造型變換、取景變換、投影變換和視口變換4個階段[7],如圖1所示。

 其中,方框中為坐標變換名稱,箭頭上為坐標系名稱。
 造型變換將各個處于自身局部坐標系中的模型變換到世界坐標系中組成整個場景;取景變換將定義在世界坐標系下的場景變換到視點坐標系中;投影變換將視點坐標系中的場景投影到二維視窗區域;視口變換將視窗中的投影結果轉換到屏幕坐標系中[8]。
 本文討論的相關算法涉及變換序列中的投影變換和視口變換,為了使物體在屏幕上的顯示尺寸不受所處距離遠近的影響,本文采用正投影。正投影將裁剪后的視景體投影到二維投影平面上,映射到以像素為單位的屏幕坐標系的過程這里簡化為式(1),因為Windows視圖窗口所在坐標系的默認形式為:視圖窗口左上角為原點,向右為X正方向,向下為Y正方向(不考慮普通二維變換和光柵化等步驟)。

 由于放大后的視景體的長度和寬度都小于放大前的視景體的長度和寬度,在視圖顯示窗口尺寸不變的前提下,模型只顯示虛線中的部分,從而達到放大的效果。

3 程序實現與應用
 以VC 8.0為開發工具,OpenGL最小系統的搭建過程省略,本文算法的主要實現過程及代碼如下。
3.1 定義變量
 在應用程序的頭文件里定義變量如下,這里變量的名稱和算法中描述的一致。
//鼠標當前點坐標
    CPoint m_MousePos;
    //鼠標當前點距離視景體左邊緣和下邊緣的距離
    double Xpv1,Ypv1;
3.2 分別為應用程序添加WM_MOUSEMOVE和WM_MOUSEWHEEL消息
 在WM_MOUSEMOVE消息的響應函數中為定義的變量賦值,部分代碼如下。
//獲取視圖窗口的尺寸
CRect rect;
GetClientRect(&rect);
//計算Xpv1和Ypv1
m_MousePos=CPoint(point.x,rect.Height()-point.y);
double w,h;
m_Camera.get_view_rect(w,h);
Xpv1=w*m_MousePos.x*1.0/rect.Width();
Ypv1=h*m_MousePos.y*1.0/rect.Height();
WM_MOUSEWHEEL消息響應函數核心代碼為:
//縮放系數
double a;
//視景體寬度和高度
double w,h;
//平移量
double t_x=0.0,t_y=0.0;
if(zDelta<0)
{
    //縮小系數
    a=1.1;
}
if(zDelta>0)
{
    //放大系數
    a=0.9;
}    
//獲取視景體寬度和高度
m_Camera.get_view_rect(w,h);
//根據算法計算平移量
t_x=(1-a)*(0.5*w-Xpv1);
t_y=(1-a)*(0.5*h-Ypv1);
//累計平移量
m_Camera.set_move_view(t_x,t_y);
//縮放
m_Camera.zoom(a);
//計算新Xpv1,Ypv1
m_Camera.get_view_rect(w,h);
CRect rect;
GetClientRect(&rect);
Xpv1=w*m_MousePos.x*1.0/rect.Width();
Ypv1=h*m_MousePos.y*1.0/rect.Height();
InvalidateRect(NULL,FALSE);//刷新視圖
3.3 算法在工程計算可視化項目中的應用

 


 算法在多個可視化項目中得到應用,圖3為“風、地震、隨機車流與橋梁交互動力分析軟件”截圖。一方面它能更真實地揭示出橋梁結構在汽車車輛荷載作用下的動態受力與變形本質,另一方面又能描述出橋梁結構在地震作用下的系統影響。因為數據計算量大,單純用VC++ 8.0程序計算耗時過多,容易造成計算中斷,所以本軟件采用Fortran語言作為數值計算程序主體,采用VC++ 8.0作為人機界面設計平臺,通過混合編程實現3種程序設計語言的組合、相互調用、參數傳遞、數據結構與信息共享,從而形成統一的橋梁動力學分析可視化軟件。
 該項目充分發揮Fortran語言在科學計算方面的優勢及OpenGL在三維可視化渲染方面的優勢,將工程人員多年積累的代碼資源及計算結果以圖形化展示,實現了橋梁結構在風、地震及隨機車流作用下的動態受力與變形的可視化。
 縮放是該軟件的重要功能之一,工程可視化軟件與一般的三維模型渲染軟件的區別是:一般三維模型軟件的點元、線元是基本不變的,而工程可視化軟件中渲染的模型是變化的,重點是將模型在外力(車輛負荷、風力、地震等)作用下的變化展示出來,即點元、線元的相對位置是變化的。為了將精力集中在觀察橋梁的結構在風、地震及隨機車流作用下的動態受力與變形,在對模型進行瀏覽時就不能不停地執行平移放大操作。假設圖3(a)中標記的點為感興趣點,縮放應圍繞該目標點進行。圖3(b)為一般算法放大后的模型效果圖,此時的目標點已經離開Windows視圖窗口,需要不斷平移再放大才能找到。圖3(c)為本文算法放大后的模型效果圖,目標點依然在視圖窗口內,在對模型進行瀏覽時不需要不停地平移即可看到模型的細節,很好地改善了用戶的操作體驗,讓工程人員能夠專注于橋梁結構在風、地震及隨機車流作用下的影響。

 計算機圖形學給人們提供了一種直觀的信息交流工具,計算機圖形學已被廣泛地應用于各個不同的領域,尤其是在計算機輔助設計、計算機輔助制造和科學計算可視化等應用領域。利用本文介紹的算法,用戶可以方便地以某一點為中心進行自由縮放,及時捕捉工程計算的效果,減少冗余操作,改善用戶操作體驗,對開發圖形圖像應用軟件有一定的幫助。
參考文獻
[1] 梅章明,張秀山.基于MFC和OpenGL的噴泉模擬實現[J].微型機與應用,2012,31(14):41-43.
[2] 何煦佳,楊榮騫,黃毅洲,等.基于OpenGL的醫學圖像實時交互處理技術[J].計算機應用與軟件,2013,30(4):48-50,64.
[3] 胡平平,劉建明,王晶杰.OpenGL顯示3DS模型若干問題的研究[J].工程圖學學報,2010(4):189-193.
[4] 張舒,褚艷利.GPU高性能運算之CUDA[M].北京:中國水利水電出版社,2009.
[5] SHREINER D, WOO M, NEIDER J,等.OpenGL編程指南(第4版)[M].鄧鄭祥,譯.北京:人民郵電出版社,2005.
[6] 崔洪斌,秦國海,?,|.利用OpenGL實現圖形的局部放大[J].工程圖學學報,2005(6):58-61.
[7] 姜衛東.基于OpenGL的三維函數圖象繪制[D].長春:吉林大學,2007.
[8] 彭群生,金小剛,萬華根,等.計算機圖形學應用基礎(第1版)[M].北京:科學出版社,2009.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美国产日韩在线| 亚洲电影天堂av| 亚洲高清免费在线| 国语自产精品视频在线看8查询8| 韩国一区二区三区在线观看| 欧美另类人妖| 亚洲精品色婷婷福利天堂| 欧美xx69| 久久精精品视频| 一本大道久久a久久精二百| 欧美日韩午夜激情| 欧美永久精品| 欧美福利视频| 国产精品久99| 亚洲在线播放| 午夜精品视频在线观看一区二区| 黑人操亚洲美女惩罚| 中文亚洲视频在线| 久久精品在这里| 亚洲欧洲一区二区三区在线观看| 欧美精品久久天天躁| 亚洲人永久免费| 欧美三级视频在线播放| 欧美精品一区二区蜜臀亚洲| 亚洲美女视频网| 欧美黄色免费网站| 亚洲欧美成人综合| 国产精品日韩精品| 香蕉久久久久久久av网站| 欧美色播在线播放| 欧美高清自拍一区| 亚洲一区二区综合| 性欧美精品高清| 农夫在线精品视频免费观看| 国产精品白丝av嫩草影院| 久久久久一区二区三区| 国产亚洲欧美另类中文| 黄色在线一区| 久久aⅴ乱码一区二区三区| 欧美三区在线观看| 久久久久国产一区二区三区| 国产精品久久久久免费a∨大胸| 亚洲成人在线网| 亚洲日本理论电影| 美国十次成人| 欧美激情aaaa| 国产精品久久久久久久第一福利| 黄色精品网站| 欧美日本簧片| 欧美日韩免费观看一区| ●精品国产综合乱码久久久久| 在线播放日韩专区| 午夜精品久久久久久久久久久久久| 日韩视频免费观看高清在线视频| 久久久久99| 欧美日韩视频在线观看一区二区三区| 亚洲欧美国产一区二区三区| 在线免费高清一区二区三区| 国产精品免费网站| 西西裸体人体做爰大胆久久久| 亚洲国产欧洲综合997久久| 夜夜嗨av一区二区三区网站四季av| 亚洲尤物视频网| 欧美巨乳波霸| 欧美一区二区国产| 欧美日韩性视频在线| 欧美日韩在线一区| 久久九九国产精品怡红院| 久久aⅴ国产欧美74aaa| 国产伦精品一区二区三区四区免费| 欧美另类69精品久久久久9999| 久久国产精品99久久久久久老狼| 99国内精品| 国产一区自拍视频| 欧美久久久久久蜜桃| 欧美精品一区视频| 国产精品视频yy9099| 国产一区二区剧情av在线| 韩日欧美一区二区| 亚洲东热激情| 久久久久久亚洲精品中文字幕| 久久人人97超碰人人澡爱香蕉| 久久国产夜色精品鲁鲁99| 日韩一二在线观看| 新狼窝色av性久久久久久| 欧美激情综合在线| 久久中文字幕一区| 伊人久久久大香线蕉综合直播| 国产精品亚洲综合色区韩国| 欧美电影在线观看完整版| 亚洲欧美日韩国产综合精品二区| 亚洲第一页在线| 欧美日韩一区二区三区在线观看免| 国产亚洲欧美色| 亚洲视频一区在线| 欧美寡妇偷汉性猛交| 黄色日韩网站| 在线观看视频一区二区欧美日韩| 国产日本亚洲高清| 欧美日韩国产一级片| 欧美国产先锋| 国产视频一区免费看| 日韩天堂av| 国产日韩欧美电影在线观看| 亚洲中字黄色| 欧美在线免费观看视频| 亚洲视频每日更新| 欧美成va人片在线观看| 91久久香蕉国产日韩欧美9色| 亚洲精品乱码久久久久久按摩观| 国产精品国产精品| 国产精品网站在线播放| 国产精品老女人精品视频| 国产精品久久九九| 国产精品永久| 久久国产精品第一页| 欧美在线视频播放| 亚洲欧美另类在线观看| 国产精品香蕉在线观看| 亚洲日本在线观看| 久久久7777| 性欧美18~19sex高清播放| 午夜精品亚洲| 欧美日韩国产小视频在线观看| 国产日韩精品电影| 久久久久久国产精品mv| 亚洲国产综合在线看不卡| 国产欧美日韩三区| 欧美freesex8一10精品| 性欧美激情精品| 午夜精品久久99蜜桃的功能介绍| 日韩五码在线| 午夜精彩视频在线观看不卡| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲精品乱码久久久久久黑人| 国产一区二区三区观看| 欧美在线看片a免费观看| 欧美一级精品大片| 欧美大胆a视频| 国产精品视频免费在线观看| 亚洲激情视频在线播放| 在线视频你懂得一区二区三区| 一区二区欧美在线观看| 欧美一区二区三区在线免费观看| 欧美色欧美亚洲高清在线视频| 一区二区三区视频免费在线观看| 欧美日本韩国一区| 久久久不卡网国产精品一区| 日韩一级免费| 亚洲日本久久| 国外成人在线视频网站| 欧美日韩1080p| 亚洲国产精品热久久| 国产精品久久久久久久久久ktv| 久久久www成人免费无遮挡大片| 欧美激情精品久久久久久| 国产一区二区三区高清在线观看| 欧美视频免费看| 欧美一级欧美一级在线播放| 欧美伊人久久久久久午夜久久久久| 黄色国产精品一区二区三区| 香蕉久久国产| 国产精品视频大全| 午夜久久久久久久久久一区二区| 亚洲精品在线观看免费| 99精品视频免费在线观看| 欧美成人精品一区| 国产日韩欧美精品在线| 欧美国产日韩一区| 欧美日韩亚洲一区| 午夜亚洲精品| 国际精品欧美精品| 在线亚洲自拍| 激情视频一区二区| 久久这里有精品15一区二区三区| 国产精品男女猛烈高潮激情| 1024国产精品| 亚洲欧美日韩精品久久奇米色影视| 国产情人综合久久777777| 亚洲免费小视频| 国产一区二区三区四区hd| 欧美一区二区三区电影在线观看| 国产一区二区久久精品| 国产中文一区| 亚洲电影第三页| 欧美日本亚洲视频| 亚欧美中日韩视频| 99成人精品| 亚洲一区二区在线免费观看视频| 亚洲一区二区三区四区视频| 国产精品视频yy9099| 亚洲激情社区| 国产精品国产三级国产专播精品人| 欧美精品色综合| 亚洲图片欧洲图片日韩av| 欧美日精品一区视频| 香蕉久久夜色精品国产| 国产目拍亚洲精品99久久精品| 欧美日韩午夜剧场| 亚洲主播在线观看| 亚洲一级高清| 久久午夜国产精品| 在线观看91精品国产麻豆| 国产精品久久久久一区二区三区共| 国产精品视频午夜| 久久精品日韩一区二区三区| 欧美日韩中文字幕精品| 亚洲一区二区在线| 国产精品美女久久久久aⅴ国产馆| 国产亚洲福利社区一区| 欧美午夜一区| 在线一区二区三区做爰视频网站| 亚洲高清不卡在线| 欧美日韩另类国产亚洲欧美一级| 亚洲男人的天堂在线观看| 好吊视频一区二区三区四区| 尤物在线精品| 亚洲欧美中日韩| 亚洲国产欧美一区| 欧美国产精品va在线观看| 欧美一级一区| 国语自产在线不卡| 亚洲一区二区av电影| 亚洲美女免费精品视频在线观看| 国产又爽又黄的激情精品视频| 久久精品最新地址| 老色批av在线精品| 亚洲激情小视频| 国产亚洲欧美日韩美女| 亚洲国产一区二区三区高清| 国产精品ⅴa在线观看h| 免费看成人av| 久久疯狂做爰流白浆xx| 亚洲一区二区精品在线观看| 亚洲成色www久久网站| 精品91在线| 欧美成人精品激情在线观看| 亚洲国产精品成人精品| 99精品视频免费观看| 国产日韩欧美在线观看| 亚洲免费影院| 欧美日韩综合一区| 国产欧美日韩亚洲一区二区三区| 欧美高清视频一区二区三区在线观看| 亚洲电影免费在线| 亚洲国产天堂网精品网站| 乱中年女人伦av一区二区| 1024成人| 国产日韩亚洲欧美| 久久精品亚洲| 久久欧美中文字幕| 欧美成人资源网| 国产一区二区日韩精品欧美精品| 亚洲高清资源综合久久精品| 亚洲欧美日韩国产中文| 黄页网站一区| 欧美性猛交视频| 亚洲电影在线看| 亚洲三级色网| 欧美gay视频激情| 一区二区国产日产| 亚洲欧美日韩一区二区三区在线| 欧美xxxx在线观看| 夜夜嗨av色一区二区不卡| 一本色道久久综合亚洲精品小说| 你懂的亚洲视频| 欧美日韩国产在线观看| 亚洲最新色图| 久久精品国产综合| 欧美日韩精品欧美日韩精品| 老司机午夜精品视频在线观看| 欧美区视频在线观看| 欧美三级黄美女| 国模精品一区二区三区色天香| 久久国产精品一区二区三区四区| 日韩亚洲欧美一区二区三区| 红桃视频成人| 99精品国产福利在线观看免费| 亚洲精品在线电影| 国产精品系列在线播放| 亚洲国产婷婷香蕉久久久久久99| 欧美一区二区三区在线看| 欧美国产精品人人做人人爱| 国产精品欧美一区二区三区奶水| 一区二区三区在线观看欧美| 国产伦精品一区二区三区高清版| 免费成人毛片| 久久精品30| **欧美日韩vr在线| 国产精品嫩草久久久久| 欧美日产国产成人免费图片| 久久精品日产第一区二区三区| 亚洲韩国精品一区| 伊人蜜桃色噜噜激情综合| 欧美日韩国产成人在线免费| 另类天堂视频在线观看| 日韩一二三区视频| 欧美一区二区三区免费视频| 国产亚洲一级| 曰本成人黄色| 国产精品美女久久久| 午夜宅男久久久| 亚洲美女黄网| 夜夜嗨av一区二区三区四季av| 亚洲欧洲日夜超级视频| 久久高清免费观看| 日韩视频免费| 亚洲一区二区三区高清不卡| 久久国产精品一区二区| 国内免费精品永久在线视频| 国产精品视频一二| 韩日精品在线| 六十路精品视频| 国内欧美视频一区二区| 亚洲一区二区三区午夜| 永久免费毛片在线播放不卡| 亚洲淫片在线视频| 亚洲欧美综合v| 国产一区视频网站| 国产香蕉久久精品综合网| 国产亚洲免费的视频看| 亚洲六月丁香色婷婷综合久久| 国产亚洲精品aa| 国产午夜一区二区三区| 欧美一区二区三区在线免费观看| 国产精品综合色区在线观看| 欧美一区国产二区| 亚洲韩日在线|