计算机图形学实验报告3
网工二班 陈衍席1205110125 第三章圆和椭圆生成算法 3.1实验原理 Bresenham 算法 3.2实验内容 请用Visual C实现圆和椭圆的Bresenham算法。 实验环境Visual Co 3.3 Visual C实现圆的Bresenham生成算法。 实验环境Visual C 程序实现步骤 1 建立MidPointCircle工程文件; 2 右击CMidPointCircleView类,建立成员函数 void MidpointCircleCDC *pDC,int x0, int yO, int r, COLORREF color int CirPotCDC *pDC,int xO, int yO, int x, int y, COLORREF color 3 编写成员函数代码,程序如下 // MidPointCircleView.cpp implementation of the CMidPointCircleView class // include stdafx.h1 include MidPointCircle.h include MidPointCircleDoc.h include MidPointCircleView.h ifdef .DEBUG define new DEBUG_NEW undefTHIS_FILE static char THIS_FILE[] _FILE; endif IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIH // CMidPointCircleView IMPLEMENT_DYNCREATECMidPointCircleView, CView BEGIN_MESSAGE_MAPCMidPointCircleView, CView // AFX_MSG_MAPCMidPointCircleView // NOTE - the Class Wizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code //}} AFX_MSG_MAP // Standard printing commands ON_COMMANDID_FILE_PRINT, CViewOnFilePrint ON_COMMANDID_FILE_PRINT_DIRECT, CView OnFilePrint ON_COMMANDID_FILE_PRINT_PREVIEW, CView OnFilePrintPreview END_MESSAGE_MAP 〃/////////////////////////////////////////////////////////////////////////// // CMidPointCircleView construction/destruction CMidPointCircleV iew CMidPointCircleV iew // TODO add construction code here } CMidPointCircleV iew -CMidPointCircleV iew } BOOL CMidPointCircleView PreCreateWindowCREATESTRUCT cs // TODO Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView PreCreateWindowcs; } 〃/////////////////////////////////////////////////////////////////////////// // CMidPointCircleView drawing void CMidPointCircleViewOnDrawCDC* pDC CMidPointCircleDoc * pDoc GetDocument; ASSERT_VALIDpDoc; // TODO add draw code for native data here MidpointCirclepDC, 100, 100, 80, RGB255,0,0; MidpointCirclepDC,500, 300, 60, RGB0,255,0; } //〃〃/〃〃〃//〃〃///〃〃/〃////〃〃//〃〃///〃〃/〃〃//〃〃///〃〃//〃〃/〃 // CMidPointCircleView printing BOOL CMidPointCircleViewOnPreparePrintingCPrintInfo* plnfo // default preparation return DoPreparePrintingpInfo; } void CMidPointCircleViewOnBeginPrintingCDC* /*pDC*/, CPrintlnfo* /*plnfo*/ // TODO add extra initialization before printing } void CMidPointCircleViewOnEndPrintingCDC* /*pDC*/, CPrintlnfo* /*plnfo*/ // TODO add cleanup after printing } //〃〃/〃〃〃//〃〃///〃〃/〃////〃〃//〃〃///〃〃/〃〃//〃〃///〃〃//〃〃/〃 // CMidPointCircleView diagnostics ifdef .DEBUG void CMidPointCircleViewAssertValid const CV iew AssertV alid; } void CMidPointCircleViewDumpCDumpContext de const CV iew Dumpdc; } CMidPointCircleDoc* CMidPointCircleView GetDocument // non-debug version is inline ASSERTm_pDocument-IsKindOfRUNTIME_CLASSCMidPointC