教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 求职职场 >

绘制金刚石图案

来源:网络收集 时间:2026-07-13
导读: 计算机图形学实验报告 西安科技大学 计算机图形学 绘制金刚石图案 专业: 班级: 学号: 姓名: 2012/9/9 计算机图形学实验报告 目录 一、实验目的及要求 二、实验分析 三、源代码 四、结果截图 五、实验总结 计算机图形学实验报告 一、实验目的及要求 (1)

计算机图形学实验报告

西安科技大学

计算机图形学

绘制金刚石图案

专业: 班级: 学号: 姓名:

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字,全部文档内容请下载后查看。喜欢就下载吧 ……
绘制金刚石图案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1703377.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)