绘制金刚石图案
计算机图形学实验报告
西安科技大学
计算机图形学
绘制金刚石图案
专业: 班级: 学号: 姓名:
2012/9/9
计算机图形学实验报告
目录
一、实验目的及要求
二、实验分析
三、源代码
四、结果截图
五、实验总结
计算机图形学实验报告
一、实验目的及要求
(1)掌握Vc++6.0和MFC编程环境;
(2)在实验前了解综合性实验的目的和要求,观察实验效果图。在实验中认真理解每个类的结构,通过搭积木的方式完成实验任务。
二、实验分析
本实验的核心是在圆的基础上绘制金刚石图案。金刚石图案是
一个二维图案,仅使用二维坐标(x,y)就可以绘制,本实验使用CP2数组实现。金刚石图案是有依次连接位于圆上的不同等分点的直线段构成。等分点个数越多,金刚石图案越复杂。当圆的等分点个数n=5时,线段连接情况如图1-1所示,线段连接点见表1-2。
算法设计的难点是避免直线段的重复连接。为此,设计一个二
重循环,代表起点索引号的外层整型变量i从i=0循环到i=n-2,代表终点所以你好的内层整型变量j从j=j+1循环到j=n-1。以(p[i].x,p[i].y)为起点,以(p[j].x,p[j].y)为终点依次连接各线段形成金刚石图案。
计算机图形学实验报告
表1-2 线段连接方式
,
,
, ,
,
图1-1 n=5时的线段连接
三、源代码
// testView.cpp : implementation of the CTestView class
#include "stdafx.h" #include "test.h" #include "testDoc.h"
计算机图形学实验报告
#include "testView.h" #include <math.h> #define PI 3.1415926 #define ROUND(a) int(a+0.5) #ifdef _DEBUG
#define new DEBUG_NEW #undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
// CTestView
IMPLEMENT_DYNCREATE(CTestView, CView) BEGIN_MESSAGE_MAP(CTestView, CView)
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()
// CTestView construction/destruction CTestView::CTestView() { }
计算机图形学实验报告
CTestView::~CTestView() { }
BOOL CTestView::PreCreateWindow(CREATESTRUCT& cs) { }
// CTestView drawing
void CTestView::OnDraw(CDC* pDC) {
CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC); pDC->SetWindowExt(rect.Width(),rect.Height()); pDC->SetViewportExt(rect.Width(),-rect.Height()); pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2); CPen NewPen,*pOldPen;
NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255)); pOldPen=pDC->SelectObject(&NewPen);
return CView::PreCreateWindow(cs);
计算机图形学实验报告
double thta; int n=20,r=150;
CPoint p[20];
thta=2*PI/n; for(int i=0;i<n;i++) { }
for(i=0;i<=n-2;i++) { }
pDC->SelectObject(pOldPen); NewPen.DeleteObject(); ReleaseDC(pDC); }
for(int j=i+1;j<=n-1;j++) { }
pDC->MoveTo(ROUND(p[i].x),ROUND(p[i].y)); pDC->LineTo(ROUND(p[j].x),ROUND(p[j].y)); p[i].x=(long)(r*cos(i*thta)); p[i].y=(long)(r*sin(i*thta));
// CTestView printing
计算机图形学实验报告
BOOL CTestView::OnPreparePrinting(CPrintInfo* pInfo) { } void
CTestView::OnBeginPrinting(CDC*
/*pDC*/,
CPrintInfo*
// default preparation
return DoPreparePrinting(pInfo);
/*pInfo*/) { }
void CTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { }
// CTestView diagnostics #ifdef _DEBUG
void CTestView::AssertValid() const { }
void CTestView::Dump(CDumpContext& dc) const { }
CView::Dump(dc); CView::AssertValid();
计算机图形学实验报告
CTestDoc* CTestView::GetDocument() // non-debug version is inline { ); }
#endif //_DEBUG
// CTestView message handlers
return (CTestDoc*)m_pDocument;
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestDoc))
四、结果截图
该图为n=20,r=150时绘制出的金刚石图案。
计算机图形学实验报告
五、实验总结
通过这次实验,我认识到了自身在C语言上的欠缺与不足,同时让我了解到VC++在绘图方面的强大功能,也激发了我学习这门课程的浓厚兴趣。希望在今后的学习中,自己能尽最大努力学好并掌握这门技术。
…… 此处隐藏:1017字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [求职职场]加法运算定律的运用练习题
- [求职职场]大型石油化工工业过程节能新技术
- [求职职场]2015-2020年中国箱纸板行业分析与投资
- [求职职场]NADEX-IWC5A点焊机故障代码
- [求职职场]英语阅读 非常有用
- [求职职场]鲁卫疾控发〔2012〕2号(联合,印发山东
- [求职职场]2014年莆田公务员行测技巧:数字推理的
- [求职职场]基于最近发展区理论的高中数学课堂有效
- [求职职场]与贸易有关的知识产权协议
- [求职职场]【王风范】微演说·职场演说三
- [求职职场]新时代国珍健康大课堂
- [求职职场]群论期末考试复习题
- [求职职场]施工现场消防安全专项施工方案(范本)-
- [求职职场]初中物理光学知识点归纳完美版
- [求职职场]毕业设计总结与体会范文
- [求职职场]江南大学2018年上半年展示设计第1阶段
- [求职职场]景尚乡民兵参战支前保障方案
- [求职职场]【优质】2019年工会职工之家建设工作总
- [求职职场]数据库技术与应用—SQL Server 2008(第
- [求职职场]汽车变速箱构造与工作原理
- 首钢工业区工业遗产资源保护与再利用研
- 第4课 《大学》节选
- 2016程序文件——检验检测结果发布程序
- 2011年高考试题文言文阅读全解释__2011
- 化学是一门基础的自然科学
- 海外做市商制度的借鉴意义
- 外国建筑史复习资料(
- 七年级下思想品德期末综合测试(二)
- 思政课部2013年上学期教学工作总结
- 电大国际公法任务3 0004
- 《圆的认识》教学设计
- 中国轨道交通牵引变流器行业市场发展调
- 中泰证券#定期报告:坚守时代硬科技和
- 浅论企业财务管理与企业经营投资风险的
- 大功率半导体激光器光纤耦合技术调研报
- 中国传统家具的现状与发展探讨
- Broadcom数字电视芯片助海尔扩展高清电
- 新HSK4词汇练习 超全(五)
- 2013届高考数学单元考点复习12
- 雨霖铃精品课件




