教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

第9章课后习题参考答案

来源:网络收集 时间:2026-09-13
导读: 第九章习题参考答案 1.基于Turbo C环境进行动画编程可以采用哪些方法? (1)全局画擦画:cleardevice( ) (2)局部画擦画:getimage( ) putimage( ) (3)页切换:setactivepage( ) setvisualpage( ) (4)延时: delay( ) (5)函数式 (6)图形变换 2.简

第九章习题参考答案

1.基于Turbo C环境进行动画编程可以采用哪些方法?

(1)全局画擦画:cleardevice( )

(2)局部画擦画:getimage( ) putimage( )

(3)页切换:setactivepage( ) setvisualpage( )

(4)延时: delay( )

(5)函数式

(6)图形变换

2.简要说说你对OpenGL及OGRE的认识?

(1)GL是美国SGI公司为图形工作站开发的一种功能强大的三维图形机制,经过长期发展,在跨平台移植的过程中,由GL扩充形成了OpenGL,目前,它已经成为高性能图形和交互式视景处理的工业标准。有了OpenGL的帮助,编程者可以轻松地进行三维动画的程序设计。

OpenGL提供的相关库有:

1)OpenGL核心库(GL)

2)OpenGL实用库(GLU)

3)OpenGL辅助库(GLAUX)

4)OpenGL工具库(GLUT)

5)OpenGL对窗口系统的扩展(WGL,等等)

对于各个库,函数功能可分为两大类:渲染功能,提供图形绘制所需的各种功能函数;窗口管理功能,管理窗口系统的所有相关功能,如键盘鼠标的响应,各种窗口事件等等。

(2)OGRE(Object-oriented Graphics Rendering Engine,面向对象的图形渲染引擎)是国际上知名的开源图形渲染引擎。OGRE是用C++开发的面向对象且使用灵活的3D引擎,它的目的是让编程者能更容易开发基于3D的动画或游戏等应用程序。引擎中的类库对更底层的系统库(如OpenGL或Direct3D)的全部使用细节进行了简化封装和抽象,同时提供基于现实世界的对象接口以及其它非常有用的工具类。因此,利用OGRE引擎来进行动画编程可以提高开发的效率,并且一般情况下要比基于OpenGL的动画编程还简单些。

3.基于Turbo C环境编写模拟自由落体的动画。

#include

#include

#define g 10

main()

{int x=320,y,t;

int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"");

cleardevice();

setcolor(15);

do{

for(t=0;t<10;t++)

{y=0.5*g*t*t;

circle(x,y,20);

delay(50000);

cleardevice();

}

for(t=0;t<10;t++)

{y=405-(90*t-0.5*g*t*t);

circle(x,y,20);

delay(50000);

cleardevice();

}

}while(!kbhit());

closegraph();

}

4.编写基于OpenGL图形库的Visual C++程序,内容为旋转一茶壶的三维动画。

#include

#include

#include

static float rot = 0.0f;

void init(void)

{

glClearColor(0.0, 0.0, 0.0, 0.0);

glShadeModel(GL_SMOOTH);

glEnable(GL_DEPTH_TEST);

}

void display(void)

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();

gluLookAt(0.0f, 1.5f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);

glBegin(GL_QUADS);

glColor3f(1.0f, 0.0f, 0.0f);

glNormal3f( 0.0f, 1.0f, 0.0f);

glVertex3f(-2.5f, -0.75f, 2.5f);

glVertex3f(2.5f, -0.75f, 2.5f);

glVertex3f(2.5f, -0.75f, -2.5f);

glVertex3f(-2.5f, -0.75f, -2.5f);

glEnd();

glRotatef(rot, 0.0f, 1.0f, 0.0f);

glColor3f(1.0f, 1.0f, 1.0f);

glutSolidTeapot(1.0f);

rot += 0.1f;

glutSwapBuffers();

}

void reshape (int width, int height)

{

glViewport(0, 0, width, height);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(45.0f, (GLfloat)width/(GLfloat)height, 0.1f, 100.0f);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

}

void keyboard(unsigned char key, int x, int y)

{

switch (key)

{

case 27:

exit(0);

break;

case 'p':

break;

default:

break;

}

}

int main(int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

glutInitWindowSize(640, 480);

glutInitWindowPosition(100, 100);

glutCreateWindow("Rotate");

init();

glutDisplayFunc(display);

glutReshapeFunc(reshape);

glutKeyboardFunc(keyboard);

glutIdleFunc(display);

glutMainLoop();

return 0;

}

5.编写基于OGRE引擎的Visual C++程序,内容为一9行9列的机器人阵列。

#include

#include

#include "ExampleApplication.h"

class SelectionRectangle : public ManualObject

{

public:

SelectionRectangle(const String &name)

: ManualObject(name)

{

setRenderQueueGroup(RENDER_QUEUE_OVERLAY);

setUseIdentityProjection(true);

setUseIdentityView(true);

setQueryFlags(0);

}

void setCorners(float left, float top, float right, float bottom)

{

left = left * 2 - 1;

right = right * 2 - 1;

top = 1 - top * 2;

bottom = 1 - bottom * 2;

clear();

begin("", RenderOperation::OT_LINE_STRIP);

position(left, top, -1);

position(right, top, -1);

position(right, bottom, -1);

position(left, bottom, -1);

position(left, top, -1);

end();

AxisAlignedBox box;

box.setInfinite();

setBoundingBox(box);

}

void setCorners(const Vector2 &topLeft, const Vector2 &bottomRight)

{

setCorners(topLeft.x, topLeft.y, bottomRight.x, bottomRight.y);

}

};

class DemoListener : public ExampleFrameListener, public OIS::MouseListener

{

public:

DemoListener(RenderWindow* win, Camera* cam, SceneManager *sceneManager) : ExampleFrameListener(win, cam, false, true), mSceneMgr(sceneManager), mSelecting(false)

{

mRect = new SelectionRectangle("Selection SelectionRectangle");

mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(mRect);

mVolQuery =

mSceneMgr->createPlaneBoundedVolumeQuery(PlaneBoundedVolumeList());

mMouse->setEventCallback(this);

} // DemoListener

~DemoListener()

{

mSceneMgr->destroyQuery(mVolQuery);

delete mRect;

}

bool mouseMoved(const OIS::MouseEvent &arg)

{

CEGUI::System::getSingleton().injectMouseMove(arg.state.X.rel, arg.state.Y.rel);

if (mSele …… 此处隐藏:21467字,全部文档内容请下载后查看。喜欢就下载吧 ……

第9章课后习题参考答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/339177.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)