圖形裁剪演算法

2022-11-23 00:18:04 字數 1758 閱讀 9213

1. 實驗目的:

理解區域編碼(region code,rc)

設計cohen-sutherland直線裁剪演算法

程式設計實現cohen-sutherland直線裁剪演算法

2. 實驗描述:

設定裁剪視窗座標為:wxl=250;wxr=850;wyb=250;wyt=450;裁剪前如下圖所示:

裁剪後結果為:

3. 演算法設計:

cohen-sutherland 直線裁剪演算法:

假設裁剪視窗是標準矩形,由上(y=wyt)、下(y=wyb)、左(x=wxl)、右(x=wxr)四條邊組成,如下圖所示。 延長視窗四條邊形成 9個區域。根據被裁剪直線的任一端點 p(x,y)所處的視窗區域位置,可以賦予一組4位二進位制區域碼c4c3c2c1。

編碼定義規則:

第一位c1:若端點位於視窗之左側,即 x第二位c2:若端點位於視窗之右側,即 x>wxr,則 c2=1,否則 c2=0。

第三位c3:若端點位於視窗之下側,即 y第四位c4:若端點位於視窗之上側,即 y>wyt,則 c4=1,否則 c4=0。

裁剪步驟:

1. 若直線的兩個端點的區域編碼都為0,即 rc1|rc2=0(二者按位相或的結果為0,即 rc1=0 且rc2=0),說明直線兩端點都在視窗內,應「簡取」。

2. 若直線的兩個端點的區域編碼都不為0,即 rc1&rc2≠0(二者按位相與的結果不為0,即 rc1≠0且 rc2≠0,即直線位於窗外的同一側,說明直線的兩個端點都在視窗外,應「簡棄」。

3. 若直線既不滿足「簡取」也不滿足「簡棄」的條件,直線段必然與視窗相交,需要計算直線與視窗邊界的交點。交點將直線分為兩段,其中一段完全位於視窗外,可「簡棄」。

對另一段賦予交點處的區域編碼,再次測試,再次求交,直至確定完全位於視窗內的直線段為止。

4. 實現時,一般按固定順序左(x=wxl)、右(x=wxr)、下(y=wyb)、上(y=wyt)求解視窗與直線的交點。

4.源程式:

//1)

class ctestview : public cview

2) ctestview::ctestview()

void ctestview::ondraw(cdc* pdc)

void ctestview::onmenuclip()//裁剪選單函式

unsigned int ctestview::encode(double linepx,double linepy)//端點編碼函式

if(linepywyt)

return rc;

}void ctestview::onmenudrawline()//繪製直線選單函式

m_draw=true;

m_i=0;

invalidate(false);

afxgetmainwnd()->setwindowtext("案例10:cohen-sutherland直線裁剪演算法");//顯示標題

messagebox("請使用滑鼠在螢幕上繪製直線,然後點選裁剪按鈕進行裁剪","提示",mb_okcancelvoid ctestview::onlbuttondown(uint nflags, cpoint point)//單擊滑鼠左鍵函式

void ctestview::cohen()//cohen-sutherland演算法

else if(0!=(rc0 & rc1))

else

//按左、右、下、上的順序裁剪

if(rc0 & left )//p0點位於視窗的左側

if(false==change)

{return5.執行結果及總結

基於圖形計算器的演算法實現與演算法初步教學

作者 楊一奮 數學教學通訊 初等教育 2014年第12期 摘 要 作為一種實現演算法的有力工具,圖形計算器不但可以將演算法化的思路落到實處,更可以在視覺化的基礎上提供分析演算法的通道.文章從例項出發,詳解了演算法實現和演算法分析的具體操作,並提出基於圖形計算器的手持特點,可以使 演算法 成為學生主動...

裁剪崗位職責

裁剪組長崗位職責和流程 一 職責 1 在廠長領導下工作,按照生產指令,帶領本班組員工正確使用裝置,生產出合格的成品。對本班組的安全生產 產品質量及現場衛生 產品計量等工作負責。2 執行上級下達的任務 指令,合理安排本班組人員的崗位 工種,認真檢查各工序的工作質量,及時正確地處理生產過程中出現的問題,...

裁剪車間獎懲規定

裁剪車間獎罰條例 一 獎則 1 季度獎 季度內按規定完成公司下達的產量定額指標和工藝指標,每季度獎勵車間獎金1000元,由車間自行分配。2 年終獎 完成全年生產目標,並且實現全年無生產事故 安全事故,無違章,獎勵車間年終獎金5000元,由車間自行分配。3.突出貢獻獎 個人或小組改革創新,提高生產工藝...