实验成绩:
《计算机图形学》实验 告
班级: 1420561
专业: 软件工程
学 : 142056127
姓名: 马哲
2016年12月
《计算机图形学》课程实验 告(一)
班级
1420561
实验日期
2016.10.24
姓名
马哲
学
27
实验名称
金刚石图案算法
实
验
目
的
及
要
求
1. 自定义二维坐标系
2. 二维点类的定义方法
3. 对话框的创建及调用方法
4. 金刚石图案算法
5. 一维堆内存的分配和释放
6. 设计个性化的菜单项与工具栏
7. 创建Test工程模板
算
法
及
实
验
步
骤
1. 设计菜单和工具栏按钮
(1.)设置菜单的ID
删除多余的菜单选项,只保留三个即可。
(2) 设置工具栏按钮
(3) 关联工具栏按钮与菜单项
(4) 设计应用程序图标
2. 设计“关于”对话框
3. 设计输入对话框
(1) 设计输入对话框界面
(2) 添加输入对话框类
(3) 为输入对话框的控件映射数据成员
m_n=30;
m_r=300.0;
代码为:
void CInputDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
GetDlgItem(IDC_EDIT1)->SetFocus();
((CEdit*)GetDlgItem(IDC_EDIT1))->SetSel(0,-1);
}
4. 设计二维点类
新建类,CP2,修改二维点类的初始定义
在P2.h添加duble类x、y,在P2.cpp添加x=0,y=0;
5.设计CTestView类
(1) 添加“绘图”子菜单命令消息映射函数
(2) CTestView头文件设计
定义指针P,定义n,r,添加Diamond成员函数
(3) CTestView的源程序设计
(源程序在附录)
修改“绘图”子菜单命令消息映射函数的定义
void CTestView::OnDrawpic()
{
// TODO: Add your command handler code here
CInputDlg dlg;
if(IDOK==dlg.DoModal())
{
n=dlg.m_n ;
r=dlg.m_r ;
}
else
return;
RedrawWindow();
P=new CP2[n];
Diamond();
delete [] P;
}
调
试
过
程
及
实
验
结
果
实验结果如下:
输入对话框界面
等分点个数为30时:
等分点个数为10时:
总
结
教材中仅介绍了0
附
录
(核心源程序清单)
void CTextView::Diamond()
{
CDC*pDC=GetDC();
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(),rect.Height());
pDC->SetViewportExt(rect.Width(),-rect.Height());
pDC->SetWindowOrg(rect.Width()/2,rect.Height()/2);
rect.OffsetRect(-rect.Width()/2,-rect.Height()/2);
CPen NewPen,*pOldPen;
NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255));
pOldPen=pDC->SelectObject(&NewPen);
double Alpha,Theta;
Theta=2*PI/n;
Alpha=PI/2-Theta;
for(int i=0;iMoveTo(Round(P[i].x) ,Round(P[i].y));
pDC->LineTo(Round(P[j].x) ,Round(P[j].y));
}
}
pDC->SelectObject(pOldPen);
NewPen.DeleteObject();
ReleaseDC(pDC);
}
实验地点
专业软件实验室
指导教师
李丽亚
5
展开阅读全文
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34795 人正在系统学习中 相关资源:点石排名软件-快速提升关键字排名-电子商务工具类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!