![圓中點(diǎn)Bresenham算法總結(jié)_第1頁](http://file4.renrendoc.com/view14/M01/0B/2F/wKhkGWemrHOAPm8vAAEmBIqIfaU451.jpg)
![圓中點(diǎn)Bresenham算法總結(jié)_第2頁](http://file4.renrendoc.com/view14/M01/0B/2F/wKhkGWemrHOAPm8vAAEmBIqIfaU4512.jpg)
![圓中點(diǎn)Bresenham算法總結(jié)_第3頁](http://file4.renrendoc.com/view14/M01/0B/2F/wKhkGWemrHOAPm8vAAEmBIqIfaU4513.jpg)
![圓中點(diǎn)Bresenham算法總結(jié)_第4頁](http://file4.renrendoc.com/view14/M01/0B/2F/wKhkGWemrHOAPm8vAAEmBIqIfaU4514.jpg)
![圓中點(diǎn)Bresenham算法總結(jié)_第5頁](http://file4.renrendoc.com/view14/M01/0B/2F/wKhkGWemrHOAPm8vAAEmBIqIfaU4515.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
案例三第5章案例三第5章圓中點(diǎn)Bresenham算法圓中點(diǎn)Bresenham算法本案例知識(shí)要點(diǎn)掌握八分法中點(diǎn)Bresenham算法繪制圓的原理設(shè)計(jì)八分法繪制圓的中點(diǎn)Bresenham算法編寫八分法繪制圓的CirclePoint(x,y)子函數(shù)編寫繪制整圓的Mbcircle()子函數(shù)一、案例需求1.案例描述使用中點(diǎn)Bresenham算法繪制圓心位于屏幕客戶區(qū)中心的圓。2.案例效果圖案例輸入對(duì)話框及效果如圖3-1所示。(a)輸入對(duì)話框(b)效果圖3-1圓中點(diǎn)Bresenham算法效果圖3.功能說明(1)要求使用對(duì)話框輸入圓的半徑。(2)圓的顏色為藍(lán)色。三、算法設(shè)計(jì)輸入圓的半徑R。定義圓當(dāng)前點(diǎn)坐標(biāo)x,y、定義中點(diǎn)偏差判別式d、定義像素點(diǎn)顏色rgb。計(jì)算,x=0,y=R,rgb=RGB(0,0,255)。繪制點(diǎn)(x,y)及其在八分圓中的另外7個(gè)對(duì)稱點(diǎn)。判斷d的符號(hào)。若d<0,則(x,y)更新為(x+1,y),d更新為d+2x+3;否則(x,y)更新為(x+1,y-1),d更新為d+2(x-y)+5。當(dāng)x小于等于y,重復(fù)步驟⑷和⑸,否則結(jié)束。四、案例實(shí)現(xiàn)1.CTestView.h文件//TestView.h:interfaceoftheCTestViewclass/////////////////////////////////////////////////////////////////////////////#if!defined(AFX_TESTVIEW_H__A75FDCFB_621C_4E38_A154_C344803E6372__INCLUDED_)#defineAFX_TESTVIEW_H__A75FDCFB_621C_4E38_A154_C344803E6372__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#include"InputDlg.h"http://包含對(duì)話框頭文件classCTestView:publicCView{protected://createfromserializationonly CTestView(); DECLARE_DYNCREATE(CTestView)//Attributespublic: CTestDoc*GetDocument();//Operationspublic: voidGetMaxY();//獲得屏幕的最大x值函數(shù) voidGetMaxX();//獲得屏幕的最大y值函數(shù) voidCirclePoint(doublex,doubley);//八分法畫圓子函數(shù) voidMbcircle();//圓中點(diǎn)Bresenham算法//Overrides //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CTestView) public: virtualvoidOnDraw(CDC*pDC);//overriddentodrawthisview virtualBOOLPreCreateWindow(CREATESTRUCT&cs); protected: virtualBOOLOnPreparePrinting(CPrintInfo*pInfo); virtualvoidOnBeginPrinting(CDC*pDC,CPrintInfo*pInfo); virtualvoidOnEndPrinting(CDC*pDC,CPrintInfo*pInfo); //}}AFX_VIRTUAL//Implementationpublic: virtual~CTestView();#ifdef_DEBUG virtualvoidAssertValid()const; virtualvoidDump(CDumpContext&dc)const;#endifprotected: intMaxX,MaxY;//屏幕x和y的最大坐標(biāo) doubleR;//圓的半徑//Generatedmessagemapfunctionsprotected: //{{AFX_MSG(CTestView) afx_msgvoidOnMENUMbcircle(); //}}AFX_MSG DECLARE_MESSAGE_MAP()};#ifndef_DEBUG//debugversioninTestView.cppinlineCTestDoc*CTestView::GetDocument(){return(CTestDoc*)m_pDocument;}#endif///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.#endif//!defined(AFX_TESTVIEW_H__A75FDCFB_621C_4E38_A154_C344803E6372__INCLUDED_)2.CTestView.cpp文件//TestView.cpp:implementationoftheCTestViewclass#include"stdafx.h"#include"Test.h"#include"TestDoc.h"#include"TestView.h"#defineROUND(a)int(a+0.5)//四舍五入#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CTestViewIMPLEMENT_DYNCREATE(CTestView,CView)BEGIN_MESSAGE_MAP(CTestView,CView) //{{AFX_MSG_MAP(CTestView) ON_COMMAND(ID_MENU_Mbcircle,OnMENUMbcircle) //}}AFX_MSG_MAP //Standardprintingcommands ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView::OnFilePrintPreview)END_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CTestViewconstruction/destructionCTestView::CTestView(){ //TODO:addconstructioncodehere}CTestView::~CTestView(){}BOOLCTestView::PreCreateWindow(CREATESTRUCT&cs){ //TODO:ModifytheWindowclassorstylesherebymodifying //theCREATESTRUCTcs returnCView::PreCreateWindow(cs);}///////////////////////////////////////////////////////////////////////////////CTestViewdrawingvoidCTestView::OnDraw(CDC*pDC){ CTestDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahere}///////////////////////////////////////////////////////////////////////////////CTestViewprintingBOOLCTestView::OnPreparePrinting(CPrintInfo*pInfo){ //defaultpreparation returnDoPreparePrinting(pInfo);}voidCTestView::OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/){ //TODO:addextrainitializationbeforeprinting}voidCTestView::OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/){ //TODO:addcleanupafterprinting}///////////////////////////////////////////////////////////////////////////////CTestViewdiagnostics#ifdef_DEBUGvoidCTestView::AssertValid()const{ CView::AssertValid();}voidCTestView::Dump(CDumpContext&dc)const{ CView::Dump(dc);}CTestDoc*CTestView::GetDocument()//non-debugversionisinline{ ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestDoc))); return(CTestDoc*)m_pDocument;}#endif//_DEBUG///////////////////////////////////////////////////////////////////////////////CTestViewmessagehandlersvoidCTestView::GetMaxX()//得到客戶區(qū)的最大橫坐標(biāo){ CRectRect; GetClientRect(&Rect); MaxX=Rect.right; }voidCTestView::GetMaxY()//得到客戶區(qū)最大縱坐標(biāo){ CRectRect; GetClientRect(&Rect); MaxY=Rect.bottom; }voidCTestView::Mbcircle()//圓中點(diǎn)Bresenham算法{ doublex,y,d; d=1.25-R;x=0;y=R; for(x=0;x<y;x++) { CirclePoint(x,y);//調(diào)用八分法畫圓子函數(shù)if(d<0) d+=2*x+3;else { d+=2*(x-y)+5; y--; }}}voidCTestView::CirclePoint(doublex,doubley)//八分法畫圓子函數(shù){Circlepoint函數(shù)塊的程序請(qǐng)更新Circlepoint函數(shù)塊的程序請(qǐng)更新 COLORREFrgb=RGB(0,0,255);//定義圓的顏色dc.SetPixel(ROUND(x)+MaxX/2,ROUND(y)+MaxY/2,rgb);//x,y dc.SetPixel(ROUND(y)+MaxX/2,ROUND(x)+MaxY/2,rgb);//y,x dc.SetPixel(ROUND(y)+MaxX/2,-ROUND(x)+MaxY/2,rgb);//y,-x dc.SetPixel(ROUND(x)+MaxX/2,-ROUND(y)+MaxY/2,rgb);//x,-y dc.SetPixel(-ROUND(x)+MaxX/2,-ROUND(y)+MaxY/2,rgb);//-x,-y dc.SetPixel(-ROUND(y)+MaxX/2,-ROUND(x)+MaxY/2,rgb);//-y,-x dc.SetPixel(-ROUND(y)+MaxX/2,ROUND(x)+MaxY/2,rgb);//-y,x dc.SetPixel(-ROUND(x)+MaxX/2,ROUND(y)+MaxY/2,rgb);//-x,y}voidCTestView::OnMENUMbcircle()//菜單函數(shù){ //TODO:Addyourcomman
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物聯(lián)網(wǎng)IoT時(shí)代下的電子設(shè)備安全挑戰(zhàn)與對(duì)策
- 現(xiàn)代企業(yè)培訓(xùn)中心的數(shù)字化設(shè)施管理
- 2025年??谪涍\(yùn)從業(yè)資格試題答案大全
- 2025年安康b2貨運(yùn)上崗證模擬考試
- 混合式學(xué)習(xí)模式下的班級(jí)培訓(xùn)實(shí)踐探索
- 環(huán)保科技在商業(yè)領(lǐng)域的應(yīng)用和商業(yè)模式創(chuàng)新
- 校園活動(dòng)策劃與組織管理研究
- 校園紅色故事教育與青少年歷史認(rèn)知
- 靈活生產(chǎn)調(diào)度應(yīng)對(duì)市場(chǎng)變化的作業(yè)管理策略
- 電信行業(yè)安全保障技術(shù)的未來趨勢(shì)預(yù)測(cè)
- GB/T 27697-2024立式油壓千斤頂
- 《消防機(jī)器人相關(guān)技術(shù)研究》
- 2024年考研政治真題及答案
- 【直播薪資考核】短視頻直播電商部門崗位職責(zé)及績效考核指標(biāo)管理實(shí)施辦法-市場(chǎng)營銷策劃-直播公司團(tuán)隊(duì)管理
- 項(xiàng)目設(shè)計(jì)報(bào)告范文高中
- 《千年古村上甘棠》課件
- 部編版小學(xué)語文二年級(jí)下冊(cè)電子課文《小馬過河》
- 《醫(yī)療機(jī)構(gòu)工作人員廉潔從業(yè)九項(xiàng)準(zhǔn)則》專題解讀
- 愛車講堂 課件
- 成立商會(huì)的可行性報(bào)告5則范文
- 市場(chǎng)監(jiān)督管理局反電信網(wǎng)絡(luò)詐騙工作總結(jié)
評(píng)論
0/150
提交評(píng)論