西北工业大学c++大作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计挑战式课程设计极限挑战挑战,不是为着征服自然,而是为着突破自我,超越自我

生命有极限,思想无极限,高度有极限,境界无极限

作业名称:

利用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)

相关文档
最新文档