西北工业大学c++大作业
- 格式:doc
- 大小:398.50 KB
- 文档页数:39
程序设计挑战式课程设计极限挑战挑战,不是为着征服自然,而是为着突破自我,超越自我
生命有极限,思想无极限,高度有极限,境界无极限
作业名称:
利用OpenGL 实现有色立体茶壶旋转图形 学 院:
航海学院 班 级:
03021301 学 号:
2013300749 姓 名:
刘德柱 团队组成: 刘德柱主要负责茶壶形态构建函数模块、潘峰主要负责旋转实现函数,调试、完善、报告等共同完成。
西北工业大学
2022年4月26日
请填写以下十项内容,将表格按页对齐(插入空行),勿删除任何部分。
1、问题与背景(描述程序所要解决的问题或应用背景)
2、开发工具(列出所使用的开发工具和第3方开发库)
3、主要功能(详细说明程序的功能)
4、设计内容(详细描述解决问题的原理和方法、算法、数据结构等)
至此,程序的大体内容以及机构已经构造成型
OPENGL的主体绘制工作:
首先使用glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 清除屏幕和深度缓存,然后使用glLoadIdentity();重置当前的模型观察矩阵,确定绘制好图形的位置glTranslatef(0.0f,0.0f,z); 移入屏幕 z 个单位。函数glTranslatef(x, y, z)作用为沿着 X, Y 和 Z 轴移动;现在是本程序中最重要的语句:glRotatef(angle,0.0f,0.0f,0.0f),其中angle为每次旋转的角度,之后分别是XYZ三个轴的旋转分量,这三个旋转分量构成了三维坐标轴中的旋转法向量。
绘制:
void COPENGLActView::OnDraw(CDC* pDC)
{
5、程序文件与工程名称(标出程序中所有文件名、工程名称及其说明)
6、函数模块(程序中各个函数的原型声明及其说明)
7、使用说明(运行程序的小型说明书)
8、程序开发总结(简要叙述编写本作业的收获与思考)
的功能十分强大,需要我们学习的地方还有很多。
9、运行截图(附上程序运行的截图画面,至少有1幅,截图越翔实得分越高)
Windows中抓取当前活动窗口:Alt + Print Screen,抓取全屏:Print Screen。或者使用HyperSnap等软件(百度搜索)。
10、源程序(附上程序源代码,若是多个文件,标出文件名)
// 1.应用程序主窗框的源代码
// MainFrm.cpp : CMainFrame框架类的实现
#include "stdafx.h"
#include "OPENGLAct.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////////////////////////////// /////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
// 注意,ClassWizard将添加和删除映射宏。
// 不编辑你所看到的这些生成的代码块!
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // 状态行指标
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
//////////////////////////////////////////////////////////////// /////////////
// CMainFrame建设/破坏
CMainFrame::CMainFrame()
{
// 待办事项:添加成员初始化代码
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // 无法创建
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT))) {
TRACE0("Failed to create status bar\n");
return -1; // 无法创建
}
// 待办事项:删除这三行如果你不想工具栏
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)