黃晶慧
摘要:該文將顏色映射與點圖標映射方法相結合,最終實現(xiàn)了旋風分離器速度場可視化。為尋求設備中的物質的運動規(guī)律,需要將速度場表示出來。點圖標方法是最簡單最直觀的矢量場映射方法,雖然矢量的方向可以被直觀、準確的表示,但用圖標的大小表示矢量的大小,極易產(chǎn)生視覺混亂,在旋風分離器內的速度場可視化中,將點圖標映射方法與顏色映射相結合,使用VC++與OpenGL成功實現(xiàn)了旋風分離器內的速度場可視化。
關鍵詞:點圖標;顏色映射;旋風分離器; 矢量場可視化
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2015)01-0153-04
Visualization of Both Arrow Plot Mapping and Color Mapping
HUANG Jing-hui
(Computer Science Department of Fujian Radio&TV University, Fuzhou 350003, China)
Abstract: This paper focuses on intensively study in Visualization of Vector Field in order to realize Vector Field Visualization of the Cyclone Separator. The algorithms that combining both arrow plot mapping and color mapping was applied to realize Velocity field Visualization of The Cyclone Separator. In order to find the rule of flow ,velocity vector should be imaged. The most simple and obvious way to visualize a velocity field is arrow plot mapping arithmetic. However, the output imaging was confusable. Arrow plot mapping arithmetic with color was applied to Velocity field simulation of The Cyclone Separator. Using VC++ and OpenGL the perfect output imaging was obtained.
Key words: Arrow Plot; Color Mapping;Cyclone Separator; Velocity Field Visualization
1 概述
基于幾何圖形的點圖標映射方法是傳統(tǒng)的點圖標映射方法,這種方法中,矢量的大小和方向是由帶有大小和方向的圖形進行映射的,另外,為了增加真實感,可以使用光照或深度顯示的方法進行處理?;趲缀螆D形的映射方法在各種矢量場可視化方法中是最簡單的。其中,常用的幾何圖形有刺狀圖標、有向線段、椎體等等。這些圖形的方向與矢量的方向相同,矢量的大小與圖形的長度成正比。幾何圖形的映射方法只能應用于二維矢量場,由于用于表示三維矢量場時,方向上會存在二義性(因為此種方法沒有法失、光照等三維相關信息而只有投影)。針對這種情況,我們用圓錐實體來表示矢量可以很好的解決。其中,錐頂?shù)姆较虮硎臼噶康姆较颍F底圓心為采樣點的坐標位置,再加上光照效果就可以很好的將矢量的三維方向信息表示出來。圓錐底面的半徑用來表示矢量的大小。這樣整個矢量場會充斥著大小差異不同的圓錐,使人們視覺上產(chǎn)生混亂的感覺。所以,雖然這種方法可以消除方向的二義性,但無法細致全面的反應出整個矢量場。
2 基于顏色的點圖標映射方法
旋風分離器是廣泛使用的一種設備,其內部是氣固兩相高速旋轉的流體,它的作用是實現(xiàn)流體的氣固兩相分離。為了尋求旋風分離器內部流體的運動規(guī)律,一個有效的方法就是將分離器內部流體的速度矢量繪制出來。傳統(tǒng)的圖形繪制方法無法直觀形象地表示流場,是因為將速度矢量(場中一截面的矢量數(shù)據(jù))在切向、軸向、徑向方向的分量單獨繪制。
顏色是最容易被人們理解的元素之一,人眼大約可以對128種色彩和35萬種顏色進行分辨,所以在很多可視化中,顏色的作用是非常重要的,在矢量場可視化中,可以將矢量的大小映射為顏色值,但矢量的方向信息要如何表示才不會丟失呢?我們將顏色映射方法與點圖標方法相結合,用顏色值表示矢量大小,用點圖標的方向表示矢量的方向。運用OpenGL對矢量設置了光照和材質,產(chǎn)生出逼真的易懂的三維立體圖標,最終清晰細致的可視出整個矢量場。
2.1 圖元的選取及映射
矢量的方向由實體箭頭的方向表示,使用實體圓柱與實體圓錐組合成為實體箭頭作為矢量場可視化的圖元,實體箭頭的顏色值映射為矢量的大小。如圖1所示,程序中相應的是Carrow類的定義。
2.2 顏色映射算法
選取紅色(Red)、黃色(Yellow)、綠色(Green)、青色(Cyan)、藍色(Blue),這5種基本顏色的RGB彩色模型。為了表示矢量的大小,我們采用線性插值方法,在5種基色之間得到了30種不同的過渡顏色,將這些過渡顏色映射為速度矢量的大小。最大矢量值[Vmax]對應為紅色,最小矢量值[Vmin]對應為藍色,如圖2所示,為了能夠準確的表示出不同矢量在矢量場的具體分布情況,我們使用了五種基本顏色之間的跨度來表示具體的矢量,例如純藍與純綠之間的跨度,對于采集的數(shù)據(jù)比較密集的空間,為了可以準確的將采集的差別細微的數(shù)據(jù)表示為可以人眼辨別的顏色值的變化,我們定義的顏色跨度要盡量小。顏色映射的步驟如下:
首先,在選取基色的基礎上,根據(jù)采集的實際數(shù)據(jù)確定顏色跨度,生成過渡顏色。
然后,計算與顏色域值對應的矢量數(shù)據(jù)域值。場中最小的矢量值[Vmin](即[VBlue])以及最大的矢量值[Vmax](即[VRed]),分別對應顏色值[CBlue]與[CRed],然后插值得出[CCyan]、[CGreen]、[CYellow]對應的矢量閾值[VCyan]、[VGreen]、[VYellow]。
計算場中每點的顏色值C
2.3 具體實現(xiàn)步驟
顏色與點圖標方法的具體實現(xiàn)包括:箭頭類的定義;讀取矢量場采樣點矢量數(shù)據(jù)文件并給賦值;顏色映射算法實現(xiàn);旋轉參數(shù)的計算與傳遞;箭頭的最終構造完成;速度場所有采樣點繪制;最終結果展示。
關鍵代碼:
//箭頭類的定義
class CArrow : public CObject
{public:
double vt,vz,length,angle;//切向和軸向的速度分量,速度矢量大小,傾斜角度
CArrow();
void SetValue1(float X,float Y,double VT,double VZ);
virtual ~CArrow();
};
//矢量數(shù)據(jù)讀取與賦值
fp1=fopen("D:\\VT1B.dat","r");
fp2=fopen("D:\\VZ1B.dat","r");
if(fp1!=NULL&&fp2!=NULL)//給切向速度賦值
{for( i=0;i {…} fclose(fp1); for( i=0;i {…} if(length>=0.27)// 顏色映射算法實現(xiàn) glColor3f(1.0,1.0-(length-0.27)/0.13,0.0); else if(length>=0.2) glColor3f((length-0.2)/0.07,1.0,0.0); // 旋轉參數(shù)的計算與傳遞 static GLfloat m_y=0.0f; glRotatef(m_y,0.0f,-1.0f,0.0f); y-=vz/200.0; glTranslatef(0.0f,y,0.0f); if(y<-1.2) y=1.2;//*/ if(m_rotation){ m_y+=0.005;//箭頭的旋轉 } //箭頭的最終構造完成 glPushMatrix(); glTranslatef(0.0f,0.25-1.0,0.0f);//將圓柱下端移動到原點 auxSolidCylinder(0.008,0.25);//繪制圓柱 glPopMatrix(); auxSolidCone(0.035,0.05);//繪制圓椎 glPopMatrix(); //所有采樣點繪制 int CShowerView::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CView::OnCreate(lpCreateStruct) == -1) return -1; m_pDC = new CClientDC(this); //初始化OpenGL和設置定時器 SetTimer(1, 20, NULL); InitializeOpenGL(m_pDC); if (pDoc→endread) {//最終結果展示 int num; for(num=0;num<10;num++) {glVertex3f(-2.2,1.31-num*0.09,0.0); glColor3f(1.0,(float)(num/9.0),0.0); glVertex3f(-1.9,1.31-num*0.09,0.0); } glEnd(); for(num=0;num<6;num++) {glVertex3f(-2.2,-0.04-num*0.09,0.0); glColor3f(0.0,1.0,(float)(num/5.0)); glVertex3f(-1.9,-0.04-num*0.09,0.0); } glEnd(); for(num=0;num<9;num++) {glVertex3f(-2.2,-0.58-num*0.09,0.0); glColor3f(0.0,(1.0-(float)num/8.0),1.0); glVertex3f(-1.9,-0.58-num*0.09,0.0); } glEnd(); ::SwapBuffers(m_pDC→GetSafeHdc()); //渲染場景 2.4 實驗結果 將基于顏色映射的矢量場映射方法應用于旋風分離器中的速度矢量場,所得可視化結果如圖3所示,該結果圖像直觀形象地表示出了速度矢量場中一截面上采樣點的速度方向及大小信息。
3 總結與展望
本文將顏色映射與點圖標映射方法相結合對旋風分離器速度場可視化進行了研究,最終清晰細致地可視出了旋風分離器內的速度場。實現(xiàn)了旋風分離器內的速度場可視化,借助三維矢量場可視化方法,使用OpenGL設置光照和材質,產(chǎn)生具有真實感的三維立體圖標,最終可視出了旋風分離器內的速度場。動態(tài)可視化是當今矢量場可視化的一個發(fā)展趨勢,今后的一個研究目標之一就是矢量場動態(tài)可視化方法的研究,使其成為我們科研和工程建設中有力的工具。
參考文獻:
[1] B. Cabral and L. C. Leedom. Imaging vector ?elds using line integral convolution. In Proceedings of ACM SIGGRAPH 09, pages 263-270, 2009.
[2] 5. W. Cai and P.-A. Heng. Principal stream surfaces. In IEEE Visualization 10, pages 75-80,2010.
[3] M. W. Hirsch. Differential Topology, 6th Ed.Berlin, Springer, 1997.
[4] S. Lang. Differential and Riemannian Manifolds,3rd Ed. New York, Springer, 1995.
[5] A. Sundquist. Dynamic line integral convolution for visualizing stream-line evolution. IEEE Transactions on Visualization and Computer Graphics, 9(8):273-282, 2003.
[6] J. Grant, G. Erlebacher, and J. J. OBrien.Case study: visualization of thermoclines in the ocean using Lagrangian-Eulerian timesurfaces. In IEEE Visualization 02, pages 529-532, 2002.
[7] B. Jobard, G. Erlebacher, and M. Hussaini.Lagrangian—Eulerian advection for unsteady ?ow visualization. IEEE Transactions on Visualization and Computer Graphics, 8(3):211-222,2002.
[8] R. Blake and S.-H. Lee. Temporal structure in the input to vision can promote spatial grouping. In Biologically Motivated Computer Vision 2000, pages 635-653, 2000.
[9] 李海生. 三維數(shù)據(jù)場可視化的帶權限定Delaunay三角化的理論和應用研究:[博士學位論文]. 北京航空航天大學,北京:2002.
[10] A. Sundquist. Dynamic line integral convolution for visualizing stream-line evolution. IEEE Transactions on Visualization and Computer Graphics, 9(8):273-282, 2003.
[11] 李海生,牛文杰,楊欽,陳其明. 矢量場可視化的研究現(xiàn)狀與發(fā)展趨勢[J].計算機應用研究, 2001(8).