版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。VC+編程實現(xiàn)對波形數(shù)據(jù)的頻譜分析-VC+編程實現(xiàn)對波形數(shù)據(jù)的頻譜分析-摘要:本文介紹了采用離散傅立葉變換(DFT)實現(xiàn)對采樣得到的波形數(shù)據(jù)文件進(jìn)行頻譜分析的一般方法,并且為了提高運算效率、節(jié)省中間存儲單元,最終采用了時間抽選奇偶分解的庫利-圖基算法實現(xiàn)快速離散傅立葉變換,對采樣數(shù)據(jù)進(jìn)行了高效的頻譜分析,并用MicrosoftVisualC+6.0編寫實現(xiàn)。關(guān)鍵字:MicrosoftVisualC+6.0、離散傅立葉變換、快速傅立葉變換、采樣一、引言頻譜分析是電子工程上一個非常重要的手段,許多計算機輔助
2、電路分析(CAA)類軟件都具備這種分析能力,以便電子工程師能清楚的看到某波形的頻譜分布情況。而要對一個輸入信號源作頻譜分析,將其由時域信號轉(zhuǎn)變?yōu)轭l域信號,就必然要用到傅立葉分析,而無論是在時域還是在頻域,都要對連續(xù)函數(shù)進(jìn)行積分運算。很顯然,要通過計算機實現(xiàn)此變換必須預(yù)先通過抽樣將原始的連續(xù)數(shù)據(jù)轉(zhuǎn)變?yōu)殡x散數(shù)據(jù),并將計算范圍收縮到一個有限區(qū)間。因此在允許一定程度近似的條件下,可以使用離散傅立葉變換(DFT)對波形數(shù)據(jù)進(jìn)行頻譜分析。二、快速傅立葉變換(FFT)算法構(gòu)成原理要計算一個N點的離散傅立葉變換需要同一個N*N點的W矩陣(關(guān)于W矩陣請參閱信號與系統(tǒng)方面的書籍)相運算,隨著N值的增大,運算次數(shù)顯
3、著上升,當(dāng)點數(shù)達(dá)到1024時,需要進(jìn)行復(fù)數(shù)乘法運算1,048,576次,顯然這種算法在實際運用中無法保證當(dāng)點數(shù)較大時的運算速度,無法滿足對信號的實時處理。根據(jù)W矩陣中W元素的周期性和對稱性我們可以將一個N點的DFT運算分解為兩組N/2點的DFT運算,然后取和即可,為進(jìn)一步提高效率,將上述兩個矩陣按奇偶順序逐級分解下去。當(dāng)采樣點數(shù)為2的指數(shù)次方M時,可分解為M級子矩陣運算,全部工作量僅為:復(fù)數(shù)乘法:M*N/2次復(fù)數(shù)加法:N*M次而直接DFT需要的運算量為:復(fù)數(shù)乘法:N*N次復(fù)數(shù)加法:N*(N-1)次當(dāng)點數(shù)N為幾十個點時FFT的優(yōu)勢還不明顯,而一旦達(dá)到幾千、幾百個點時優(yōu)勢是十分明顯的:N=1024
4、時:DFT需1048576次運算,F(xiàn)FT僅需5120次運算,改善比204.8。N=2048時:DFT需4194304次運算,F(xiàn)FT僅需11264次運算,改善比達(dá)到372.4。三、時間抽選奇偶分解快速離散傅立葉變換的程序?qū)崿F(xiàn)當(dāng)采樣點數(shù)較多時,如變換前和變換后的序列都按自然順序排列,則中間運算過程會占用大量的中間存儲單元,造成效率的低下和存儲單元的浪費。根據(jù)FFT的實現(xiàn)原理我們可以對采樣序列進(jìn)行逐次奇偶抽選,打亂以前的次序重新排序,然后按此順序參加運算,可以實現(xiàn)即位運算提高存儲單元的利用率。(一)復(fù)數(shù)的描述方法進(jìn)行傅立葉變換時不可避免的要用到復(fù)數(shù),而在VC中并沒有現(xiàn)成的可用于表示復(fù)數(shù)的數(shù)據(jù)類型,可
5、以自己定義一個含有兩個成員變量的數(shù)據(jù)結(jié)構(gòu)來表示復(fù)數(shù),這兩個成員變量可分別用于表示復(fù)數(shù)的實部與虛部:typedefstructtagComplexfloatRe;/復(fù)數(shù)的實部floatIm;/復(fù)數(shù)的虛部Complex;(二)倒序的實現(xiàn)在進(jìn)行快速傅立葉變換時,可以將輸入的時域序列和輸出的頻域序列都按照自然順序排列;也可以按照蝴蝶圖所描述的計算方法對輸入的時域序列按奇偶分解后的序列排序而輸出的頻域序列仍是按自然順序排列的;還有一中方式是輸入的時域序列是不進(jìn)行抽選的自然序列,而輸出的頻域序列則是按奇偶分解后的順序排列的。這三種方式各有優(yōu)點,第一種對輸入、輸出不需要進(jìn)一步排序,但由于自然排序不符合蝴蝶圖
6、運算規(guī)律,會占用大量中間存儲單元。而后兩種則無須中間存儲單元,但需要倒一次序。權(quán)衡利弊,當(dāng)采樣點較多時還是采用后兩種方式好,多一次倒序運算對現(xiàn)在的高性能計算機而言并不是什么負(fù)擔(dān)。下面代碼用于對原始采樣序列的時間抽選奇偶分解工作,其中A、N分別表示指向采樣序列復(fù)數(shù)數(shù)組的指針和序列的長度。intNV2=N/2;intNM1=N-1;intI,J,K=0;ComplexT;/用于中介的復(fù)數(shù)變量TI=J=1;while(I=NM1)if(IJ)T=AJ-1;/將AJ-1的內(nèi)容和AI-1的內(nèi)容互換,借助于中間變量TAJ-1=AI-1;AI-1=T;K=NV2;while(KJ)J-=K;K/=2;J+=
7、K;I+;(三)時域信號的頻譜分析首先要將從外設(shè)輸入或采集的時域波形數(shù)據(jù)經(jīng)抽樣量化后,通過CFile類的Open()、Read()等成員函數(shù)將其讀取到緩存中,并將其轉(zhuǎn)化為復(fù)變量存放于復(fù)變量數(shù)組A中,同時需要驗證以下數(shù)據(jù)量的長度是否為2的整數(shù)次冪,如若不是則必須用0來補齊,否則無法用蝴蝶圖進(jìn)行分解運算。下面代碼用于完成對原始采樣時域序列的快速傅立葉變換,A、M分別表示指向原始采樣數(shù)據(jù)數(shù)組的指針和序列長度的2的整數(shù)次冪:ComplexU,W,T;intLE,LE1,I,J,IP;intN=(int)pow(2,M);/在此采用的是時間抽選奇偶分解方式,所以在參加運算前首先要對時間序列進(jìn)行倒序Rev
8、erseOrder(A,N);intL=1;while(L=M)LE=(int)pow(2,L);LE1=LE/2;U.Re=1.0f;U.Im=0.0f;W.Re=(float)cos(PI/(1.0*LE1);/計算W算子的值W.Im=(float)-1.0*sin(PI/(1.0*LE1);if(abs(W.Re)1.0e-12)W.Re=0.0f;if(abs(W.Im)1.0e-12)W.Im=0.0f;J=1;while(J=LE1)I=J;while(I摘要:本文詳細(xì)介紹了在VB集成環(huán)境下數(shù)字波形高速顯示的方法,同時對雙通道波形顯示和數(shù)字濾波方法也進(jìn)行了介紹。關(guān)鍵詞:數(shù)字;波形;
9、顯示;濾波1前言:隨著計算機技術(shù)及電子技術(shù)的發(fā)展,數(shù)字采集技術(shù)在檢測領(lǐng)域的應(yīng)用越來越廣泛,檢測速度越來越高,檢測的數(shù)據(jù)量越來越大,特別是在無損檢測領(lǐng)域,將檢測數(shù)據(jù)通過計算機處理后繪制出波形,并實時顯示,對及時發(fā)現(xiàn)傷損、分析傷損具有重要意義。2波形顯示檢測數(shù)據(jù)通常是離散的數(shù)據(jù),將離散的數(shù)據(jù)繪制出波形,可通過在兩點間連接線段的方法實現(xiàn)。2.1用Line方法顯示波形VB提供了Line畫直線方法,可在窗體上增加一個圖片框控件,適當(dāng)設(shè)置圖片的大小和背景顏色,用Line方法將離散數(shù)據(jù)按檢測順序連接成線段,即可將波形顯示在圖片框中。但該方法顯示波形速度較慢,不適合高速顯示的應(yīng)用。2.2WindowsAPI函
10、數(shù)顯示波形在VB中兩點間連線的另一種方法是用WindowsAPI函數(shù),Win32API提供了以下兩個函數(shù),聯(lián)合使用可實現(xiàn)波形的快速顯示,經(jīng)過測試,顯示速度比使用Line方法快70%以上。LineTo函數(shù):函數(shù)功能:畫出由數(shù)組定義的點連接的一系列線段。函數(shù)原型:BOOLLineTo(HDChdc,intnXEnd,intnYEnd);參數(shù):hdc:設(shè)備環(huán)境句柄。nXEnd:定義線段終點的X坐標(biāo)。nYEnd:定義線段終點的Y坐標(biāo)。返回值:若函數(shù)調(diào)用成功,則返回非0值;若函數(shù)調(diào)用失敗,則返回值為0。MoveToEx函數(shù):函數(shù)功能:將當(dāng)前位置更新為指定的點,并有選擇的返回原先的位置。函數(shù)原型:BOOL
11、MoveToEx(HDChdc,intX,intY,LPPOINTlpPoint);參數(shù):hdc:設(shè)備環(huán)境句柄。X:定義新位置的X坐標(biāo)(邏輯坐標(biāo))。Y:定義新位置的Y坐標(biāo)(邏輯坐標(biāo))。lpPoint:指向一個POINT結(jié)構(gòu),結(jié)構(gòu)中存放原先的位置。若此參數(shù)為NULL,則不返回原先的位置返回值:若函數(shù)調(diào)用成功,則返回非0值;若函數(shù)調(diào)用失敗,則返回值為0。在連接線段時,首先將檢測數(shù)據(jù)放入一個數(shù)組中,用MoveToEx函數(shù)定位畫線的起始點坐標(biāo),然后用LineTo函數(shù)畫出起始點至下一個點之間的線段,再用MoveToEx將畫線的起始點定位到下一個點,繼續(xù)用LineTo函數(shù)畫線,如此循環(huán),即可將離散點連接成
12、波形。例:zz=MoveToEx(Picture1.hdc,i,Mwave(i),LpPoint1)zz=LineTo(Picture1.hdc,i,Mwave(i+1)實時波形顯示界面通常計算機需要接收外部實時發(fā)送的數(shù)據(jù)并用十分形象的方式顯示出來。例如柱狀圖、餅圖等等。本應(yīng)用程序則采用波形的形式顯示,并接將之設(shè)計為可以接收多路數(shù)據(jù)的波形顯示界面。本應(yīng)用程序在VS2008環(huán)境下調(diào)試通過,源碼下載連接如下/5120804.html。一.程序界面點擊該圖放大上圖中顯示了兩路波形即三角波和正弦波,當(dāng)然這兩路波形是由程序計算出來的并不是從外部接收的。實際工作中則可以配合串口通訊設(shè)備接收它發(fā)來的數(shù)據(jù)并顯
13、示出來。二.波形控件類介紹本程序的實現(xiàn)主要依賴于那個波形顯示控件。從下載連接那里可以下載該源碼,里面的文件中,2DPushGraph.h和2DPushGraph.cpp即是該控件的類的定義文件和實現(xiàn)文件。分析之后得到該類的一些信息。其成員函數(shù)包括:程序代碼:COLORREFm_crTextColor;/標(biāo)簽文字顏色COLORREFm_crBGColor;/背景顏色COLORREFm_crGridColor;/柵格顏色CStringm_strMaxLabel;/最大值之處的標(biāo)簽CStringm_strMinLabel;/最小值之處的標(biāo)簽boolm_bShowMinMax;/最小最大值顯示bool
14、m_bShowGrid;/是否顯示柵格boolm_bStylesModified;/是否被修改intm_nMoveOffset;/偏移intm_nMaxCoords;/最大緩沖intm_nMaxPeek;/顯示數(shù)據(jù)的最大值intm_nMinPeek;/顯示數(shù)據(jù)的最小值intm_nGridSize;/柵格間距intm_nPeekOffset;/峰值偏移其實現(xiàn)方法包括:程序代碼:boolCreateFromStatic(UINTnStaticID,CWnd*pParent);/該方法用于創(chuàng)建控件實例,通常在對話框初始化函數(shù)中調(diào)用,nStaticID為控件ID,pPatent為創(chuàng)建在那個窗口中的ID
15、。LPCTSTRGetLabelForMax()const;/獲取最大值處的標(biāo)簽LPCTSTRGetLabelForMin()const;/獲取最大值處的標(biāo)簽COLORREFGetBGColor()const;/獲得背景色COLORREFGetGridColor()const;/獲得柵格顏色voidSetBGColor(COLORREFcrColor);voidSetGridColor(COLORREFcrColor);voidSetTextColor(COLORREFcrColor);COLORREFGetLineColor(UINTuiLineID);/該方法用于獲得ID號為uiLineI
16、D的波形的線條顏色,因為要在波形控件中畫線必須先調(diào)用boolAddLine(UINTuiLineID,COLORREFcrColor);創(chuàng)建一個波形,ID號為uiLineID。boolSetLineColor(COLORREFcrColor,UINTuiLineID);COLORREFGetTextColor()const;/獲得標(biāo)簽文本的顏色intGetGridSize()const;/獲得柵格間隔voidSetGridSize(unsignedshortusWidthAndHeight);intGetMaxPeek()const;/獲得最大值縱坐標(biāo)intGetMinPeek()const;
17、/獲得最小值縱坐標(biāo)voidSetPeekRange(intnMin,intnMax);voidSetMaxPeek(intnMax);voidSetMinPeek(intnMin);unsignedshortGetInterval()const;/獲得橫坐標(biāo)間距voidSetInterval(unsignedshortusInterval);voidSetLabelForMax(LPCTSTRlpszLabel);voidSetLabelForMin(LPCTSTRlpszLabel);boolAddLine(UINTuiLineID,COLORREFcrColor);/該方法用于在該控件上創(chuàng)
18、建一個波形。voidRemoveLine(UINTuiLineID);/清除ID號為uiLineID的波形boolPush(intnMagnitude,UINTuiLineID);/在ID號為uiLineID號的波形上添加一個數(shù)據(jù)點,nMagnitude為幅度voidShowAsBar(UINTuiLineID,boolbAsBar);/柱狀圖顯示voidUpdate();/更新三.應(yīng)用編程運用該控件在VS2008環(huán)境下的編程步驟如下:1.建立一個對話框的MFC工程,在對話框上按照上圖所示的界面布置控件。其中波形控件那里布置一個PictureControl控件將其ModalFrame和Type
19、均屬性設(shè)置為true,其他均設(shè)置為False。注意給PictureControl取的ID!后面編程將會用到。2.將波形控件類的定義文件和實現(xiàn)文件拷貝至你的工程目錄下。但這實際上并沒有將該類真正添加到你的工程下,需手動添加類。常規(guī)操作,不詳述。3.在對話框的定義和實現(xiàn)文件中分別添加如下代碼:程序代碼:#include2DPushGraph.h4.在對話框定義文件中(我給的供下載的例程中的是DataRealTimeDlg.h這個文件)中定義一個該控件類的變量:程序代碼:private:C2DPushGraphm_PushGraph;5.在對話框的實現(xiàn)文件中(我給的供下載的例程中的是DataReal
20、TimeDlg.cpp這個文件)的對話框初始化函數(shù)中添加如下代碼:程序代碼:m_PushGraph.CreateFromStatic(IDC_REALCTRL,this);/這個IDC_REALCTRL即是那個PictureControl控件的ID號。m_PushGraph.ModifyStyle(0,WS_THICKFRAME);/設(shè)置風(fēng)格6.現(xiàn)在不妨試著運行以下該程序,應(yīng)該可以觀察到那個控件顯示出來了吧。在添加以下代碼:程序代碼:m_PushGraph.AddLine(m_sin,RGB(255,255,255);m_PushGraph.AddLine(m_tra,RGB(255,0,0)
21、這兩行代碼分別添加了一個正弦波形,ID號為m_sin,一個三角波形,ID號為m_tra。不過運行之后并沒有數(shù)據(jù)點繪制出來。那是應(yīng)為還沒有調(diào)用boolPush(intnMagnitude,UINTuiLineID)函數(shù)添加數(shù)據(jù)點。試著添加幾個數(shù)據(jù)點再運行即可觀察到波形。7.還有一些控件的響應(yīng)代碼看看那個下載的例程吧。四.結(jié)束語成功了吧,AnyProblem,Contactmeplease!控件設(shè)計NobisStatusChart-野比的狀態(tài)波形圖控件從構(gòu)思到實現(xiàn)NobisStatusChart-野比的狀態(tài)波形圖控件從構(gòu)思到實現(xiàn)野比著源程序下載:Demo控件背景目前比較流行的WinForm程序設(shè)計
22、都會提供形象的可視化數(shù)據(jù)流動記錄功能,如FlashGet及其衍生軟件的懸浮窗網(wǎng)速監(jiān)視圖,Windows任務(wù)管理器的CPU、內(nèi)存使用圖等。構(gòu)思為了在我們自己的程序中實現(xiàn)這種效果,就需要研究、分析它們的原理,掌握其規(guī)律,然后加以實現(xiàn)。很明顯,從軟件可重用性以及各種隨之而來的好處考慮,我們要求將這個“波形顯示”效果做成一個控件(Control)。分析還是以FlashGet的懸浮窗和Windows任務(wù)管理器作為研究對象。仔細(xì)觀察它們的工作方式,發(fā)現(xiàn)它們有以下的共同點:在右邊更新當(dāng)前的波形值更新后的波形不消失,而是整體向左平移可以設(shè)置波形顏色、更新速度等而通過深入研究,發(fā)現(xiàn)二者不同點如下:不同的顯示方式
23、,有曲線顯示和直方圖顯示有無定位網(wǎng)格各部分顏色可自定義設(shè)計通過分析,可以決定如下:凡是二者共同點,加以重點實現(xiàn);凡二者不同之處,通過設(shè)置屬性(Property)進(jìn)行更改。最后繪制時,基于所設(shè)置的屬性,使用共同方法加以實現(xiàn)。因此自定義屬性如下:BackColor(重寫基類屬性)Enabled(重寫)ForeColor(重寫)GridColor網(wǎng)格顏色GridHeight網(wǎng)格每格高度GridShiftting是否平移網(wǎng)格GridWidth網(wǎng)格每格寬度Interval波形刷新間隔(單位:毫秒)Mode波形顯示方式(曲線/直方圖)Range數(shù)值范圍ShifttingIncrement向左平移增量Val
24、ue當(dāng)前值控件因為要定時更新,因此具有一個內(nèi)部的Timer對其進(jìn)行定時,其Interval由控件的Interval屬性指定。對于此自定義控件,需要每次更新時在其OnPaint()事件中對整個控件進(jìn)行繪制。繪制順序為:背景-網(wǎng)格-波形,如此保證所有部分均正確畫出且無遮擋。從波形看,很明顯,我們需要一個長度至少等于波形控件寬度的數(shù)組來存放每時刻波形的值,因此可以確定這個數(shù)組是和控件繪圖畫布寬度一致的。算法繪圖最重要的是算法部分,如何計算如網(wǎng)格位置,如何將圖形整體平移,如何設(shè)置波形值是本控件的重點和難點部分。計算網(wǎng)格位置,以上面的ShifttingIncrement為offset參數(shù)傳入/網(wǎng)格數(shù)(不
25、計邊緣)floatdiv;floatpos=0F;/先畫垂直方向/可以少畫一根線div=(float)w/(float)gridWidth+1;for(inti=0;i(int)div;i+)pos+=gridWidth;g.DrawLine(penGrid,pos-offset,0,pos-offset,h);/畫水平方向div=(float)h/(float)gridHeight;pos=0F;for(inti=0;i(int)div;i+)pos+=gridHeight;g.DrawLine(penGrid,0,pos,w,pos);對于波形,傳入其波形值數(shù)組作為參數(shù)/從0到w繪制int
26、len=w;/根據(jù)繪制方式if(chartMode=StatusChart.ChartMode.Histogram)for(inti=0;ilen;i+)g.DrawLine(p,i,h-vali,i,h);g.DrawLine(p,len,h-vallen-1,len,h);elselen-;for(inti=0;ilen;i+)g.DrawLine(p,i,h-vali,i+1,h-vali+1);len+;g.DrawLine(p,len-1,h-vallen-2,len,h-vallen-1);如何平移,是一個難點,需要在內(nèi)部定時器的Tick()事件中加以處理/更新網(wǎng)格偏移/只有啟用了
27、網(wǎng)格移動才處理if(gridShiftting)iOffset+=gridShifttingIncrement;iOffset%=gridWidth;/更新圖形(整體左移)/必須在這里而不能在畫圖的同時移動,/若在畫圖中移動,則當(dāng)畫面被遮擋(OnPaint)事件不發(fā)生時無法更新intlen=w;for(inti=0;ilen;i+)/判斷數(shù)組越界if(ilen-1)vali=vali+1;elsevallen-1=currentValue;/break;/vallen=currentValue;Invalidate();最后引發(fā)控件的Invalidate()方法使控件重繪自身。效果最后的控件運
28、行效果如下圖所示:總結(jié)通過設(shè)計并實現(xiàn)StatusChart控件,我們研究了波形狀態(tài)監(jiān)控的相關(guān)現(xiàn)象和原理,復(fù)習(xí)并使用了控件的設(shè)計生成,最后使用GDI+技術(shù)對其進(jìn)行了實現(xiàn)。VC+編程實現(xiàn)對火焰的計算機動態(tài)仿真-摘要:本文通過對真實火焰物理特性的分析,建立了火焰動態(tài)燃燒的數(shù)學(xué)模型,并在此數(shù)學(xué)模型基礎(chǔ)之上借助于DirectDraw技術(shù)對圖形顯示的加速,在VC+6.0下對火焰作了效果非常逼真的計算機動態(tài)仿真。關(guān)鍵詞:火焰;DirectDraw;計算機仿真引言計算機仿真技術(shù)的基本原理都是一樣的,神秘復(fù)雜的核爆同水波、火焰、煙霧等非常平常的自然現(xiàn)象在仿真處理過程中并沒有什么太大的區(qū)別。都是經(jīng)歷了從實體對象到
29、物理特性的總結(jié),再由此建立數(shù)學(xué)模型并在數(shù)學(xué)模型基礎(chǔ)之上提出仿真算法,最后通過計算機將其動態(tài)仿真出來等一系列步驟。本文以火焰作為仿真對象,通過對熱源、熱擴散以及對流等特性的分析對其建立了數(shù)學(xué)模型及仿真算法,為了能充分發(fā)揮計算機對圖形的硬件加速,使用DirectDraw技術(shù)對仿真結(jié)果顯示進(jìn)行了加速,使之能逼真、流暢地對火焰的燃燒過程實行動態(tài)模擬。簡單近似模型設(shè)計雖然火焰在自然界是一種極普通的自然現(xiàn)象,但根據(jù)流體力學(xué)的相關(guān)知識,火焰可以表達(dá)為一個相當(dāng)復(fù)雜的三維動態(tài)流體系統(tǒng)。如要在計算機中對這樣一個復(fù)雜的流體系統(tǒng)做出精確的仿真將需要有相當(dāng)龐大復(fù)雜的數(shù)學(xué)模型為基礎(chǔ),而且運算量將非常巨大,在現(xiàn)有的微型計算
30、機中幾乎很難保證其動態(tài)實時性,這也就失去了仿真的意義。因此,在仿真時應(yīng)用盡可能簡單的模型來實現(xiàn)盡可能逼真的效果。從物理角度分析,要產(chǎn)生火焰,首先要有火源,其次為了產(chǎn)生焰的效果,需要以火源為中心向上、向四周擴散,而且由于在擴散過程中逐漸遠(yuǎn)離火源,溫度會逐漸下降,表現(xiàn)在視覺上就是火焰的冷卻變暗。另外,由于火焰的高溫使周圍空氣受熱膨脹比重下降,因此會有空氣的對流出現(xiàn),這將把火焰向上吹起,使火焰向四周擴散的距離要遠(yuǎn)小于向上擴散的距離?;谝陨蠋c認(rèn)識,可以采取對應(yīng)的仿真措施:對火源的設(shè)置可以用一幅二值位圖來標(biāo)識,非火源以低亮度像素填充、火源點則設(shè)以高亮度像素,通過對位圖像素值的判別可以斷定當(dāng)前點是否為
31、火源。對于火源的溫度高低可用其所在點的亮度來描述;對于火焰擴散的模擬,為盡量減少運算量,在此簡單地用某火源點(x,y)及其前后左右鄰近四點的均值來近似,即Pixel(x,y)=(Pixel(x,y)+Pixel(x,y-1)+Pixel(x,y+1)+Pixel(x-1,y)+Pixel(x+1,y)/5,雖然該近似算法沒有采取正余弦的方法精確,但運算速度極快,而且在后續(xù)的實驗效果上同采用正余弦的方法幾乎沒有任何差別;由于在仿真過程中對火焰的溫度是通過改變其亮度值來實現(xiàn)的,因此對于擴散過程的冷卻可對像素點降低一個固定的亮度值來實現(xiàn)。衰減值的大小需要視所希望火焰冷卻速度的快慢而定;對流對火焰產(chǎn)生的直
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年糖尿病多重用藥管理溝通策略-1
- 酶制劑微生物菌種工安全管理能力考核試卷含答案
- 彩畫作文物修復(fù)師安全培訓(xùn)效果知識考核試卷含答案
- 暗室?guī)煵僮骷寄軠y試考核試卷含答案
- 水文勘測船工復(fù)測考核試卷含答案
- 早產(chǎn)兒睡眠監(jiān)測
- 名字由來介紹
- 老年疼痛患者圍術(shù)期疼痛管理方案
- 安全生產(chǎn)市場分析與規(guī)范提出
- 物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)加密方案
- GB/T 11018.1-2008絲包銅繞組線第1部分:絲包單線
- GB 31633-2014食品安全國家標(biāo)準(zhǔn)食品添加劑氫氣
- 麻風(fēng)病防治知識課件整理
- 手術(shù)室物品清點護(hù)理質(zhì)量控制考核標(biāo)準(zhǔn)
- 消防工程監(jiān)理實施細(xì)則
- 雙排樁支護(hù)設(shè)計計算書
- 權(quán)利的游戲雙語劇本-第Ⅰ季
- 衛(wèi)生部《臭氧消毒技術(shù)規(guī)范》
- 早期復(fù)極綜合征的再認(rèn)識
- 山西某2×150MW循環(huán)流化床空冷機組施工組織設(shè)計方案
- (高清正版)SL 56-2013 農(nóng)村水利技術(shù)術(shù)語
評論
0/150
提交評論