《计算机图形学》实验指导书(正式版)

《计算机图形学》实验指导书(正式版)
《计算机图形学》实验指导书(正式版)

《计算机图形学》实验指导

谢晓玲

华东理工大学

信息学院计算机系

2010年8月

目录

实验1 OpenGL应用的创建 (2)

实验2 橡皮筋技术的实现 (17)

实验3 基本变换 (24)

实验4 拾取 (41)

实验5 三维观察的实现 (54)

实验1 OpenGL应用的创建

一、实验目的

1、了解C++.NET开发基于窗口技术的应用程序的步骤;

2、了解OpenGL绘图的步骤;

3、显示一个三角形图形。

二、使用的工具软件及环境

C++.NET、OpenGL

三、实验内容

1、构造一个单文档的Windows应用程序

2、定义一个填充图案;

3、通过菜单,交互控制填充开关;

4、显示一个填充的三角形图形。

四、实验指导

1、基本要素

(1)C++.NET程序设计框架

C++.NET提供了一套应用程序框架,应用程序框架是指用于生成一般的应用程序所必须的各种面向对象的软件组建的集合。

C++程序设计的特点之一就是大量使用类库来进行功能扩展。

类库是一个可以在应用程序中使用的相互关联的C++类的集合。一些类库是随编译器一起提供的,一些是由其他软件公司销售的,还有一些是由用户自己开发的。

应用程序框架是一种类库的超集,它用来定义程序的结构,将其他的类库,例如文档类、视图类及用户自定义类等,嵌入到应用程序框架中,以完成用户预期的功能。通过定制,C++.NET 可以自动生成一套程序代码,以单文档多视风格的应用程序为例,自动生成的源代码主要包含应用程序类、主框架类、文档类、视口类。

以MyDemo为工程名,C++.NET自动生成的类如下:

A.class CMyDemoApp: public CWinApp

CMyDemoApp的对象就代表了一个应用程序。该程序定义了一个单独的全局CMyApp对象theApp:

CMyDemoApp theApp;

其基类决定了theApp的行为,包括程序的启动、初始化和运行等。

B.class CMainFrame : public CFrameWnd

它代表了应用程序的主框架窗口,它负责创建和显示具体的窗口结构,并负责消息的分发。

C.class CMyDemoDoc : public CDocument

从CDocument派生应用程序的文档类,可以添加成员变量用于保存数据,可以重写成员函数Serialize()实现文档数据的串行化。

D.class CMyDemoView : public CView

从CView派生应用程序的视图界面,响应用户的操作。

(2)文档-视图结构

文档类和视图类共同形成了“文档-视图”结构。文档类用于管理数据,视图类用于将数据显示出来,视图是提供文档与用户交互的一个窗口。视图类的好处在于将数据从用户对数据的

观察中分离了出来,从而允许同一数据可以有多种视图,而这也是符合客观世界中人们观察事物过程的客观要求的。

文档类的任务是对数据的管理和维护,相当于数据容器,数据通常被保存在文档类的成员变量中,通过文档类的串行化过程将数据保存到文件或数据库中。

视图类在文档和用户之间起中介作用,视图可以直接或间接访问文档类中存放数据的成员变量,并显示在屏幕上;可以接受用户的输入,并反馈给文档类。

文档-视图结构的工作机制是视图调用成员函数GetDocument()获得指向相关联的文档对象的指针,再通过该指针调用文档类的成员获得数据,由屏幕显示给用户;用户通过视图交互读写数据,再通过相关联的文档类的成员传递数据,最后通过串行化保存到介质中。

a)文档类的方法

CDocument是所有的文档类的基类,为文档与其他对象(视图、应用程序对象以及框架窗口等)交互的实现提供一个框架。它提供的方法分一般方法(表1_1)和虚拟方法(表1_2)(允许应用程序重写),可以通过Afxwin.h头文件了解该类的基本功能。

表1_1 CDocument的一般方法

GetTitle() 获得文档标题

GetPathName()获得文件的路径

GetDocTemplate()获得文档模板的指针

AddView() 向文档视图列表中添加视图

RemoveView() 从文档视图列表中删除视图

UpdateAllViews() 通知相关的视图,文档已被修改,它们应该重画

DisconnectViews() 使文档与视图分离

表1_2 CDocument的虚拟方法

SetTitle()设置文档标题

SetPathName()设置文件的路径

IsModified()确定文档最后一次保存后是否被修改过

SetModifiedFlag()设置文档最后一次保存后是否被修改过

OnNewDocument() 由MFC调用建立新文档,在此可以进一步初始化

OnOpenDocument()由MFC调用打开文档

OnSaveDocument()由MFC调用保存文档

OnCloseDocument()由MFC调用关闭文档

GetFile()获得CFile类的指针

ReleaseFile()释放文件

SaveModified() 查询文件的修改状态并保存修改的文件

GetFirstViewPosition() 获得文档视图列表的头位置

GetNextView() 获得下一个文档视图

DeleteContents() 在未撤销文档对象时删除文档数据

CanCloseFrame() 确定文档的框架窗口是否被允许关闭

b)视图类的方法

CView视图类是从CWnd类派生的,所以CView视图类及其派生类都具有CWnd类的所有功能,如创建、移动、显示、隐藏窗口,并且接受任何Windows消息,而CDocument类不行。CView视图类提供的方法分一般方法(表1_3)和虚拟方法(表1_4)(允许应用程序重写),可以通过Afxwin.h头文件了解该类的基本功能。

表1_3 CView的一般方法

GetDocument() 获得与视图相关的文档的标题

DoPreparePrinting()显示Print对话框,创建打印机设备环境

表1_4 CView的虚拟方法

IsSelected()确定是否选中

OnScroll()当用户滚动时,CView进行响应

OnInitialUpdate ()在视图第一次与文档连接时由MFC调用

OnDraw()显示文档的内容,实现屏幕显示、打印及打印预览。

OnUpdate() 通知视图它所关联的文档进行了修改而需进行响应

OnPrepareDC()在调用OnDraw()前允许由MFC调用修改设备描述表当屏幕发生变化或焦点的变化需要视图重绘以实现正确显示时,OnDraw()被自动调用;而文档数据发生变化时,OnDraw()函数不会被自动调用,需调用与视图关联的文档类的成员函数OnUpdateAllViews(),该函数使视图做出响应调用OnDraw()函数。

c)视图类的派生

在很多情况下,应用程序中使用CV iew的派生类而非CV iew作为本应用程序中视图类的基类,在创建应用程序时,应根据需求选择合适的视图派生类。

●CScrollView类,可以实现视图的滚动显示,可以利用其成员函数SetScrollSize()设置

滚动尺寸和坐标映射模式,但在绘图和接受用户输入时需要对坐标进行变换。

●CTreeView类,支持树型控件功能的实现,以TreeCtrl界面为视图界面,通过成员函

数GetTreeCtrl可以获得CTreeCtrl的引用。

●CListView类,类似CTreeV iew类,以ListCtrl界面为视图界面,通过成员函数GetListCtrl

可以获得CListCtrl的引用。

●CEditView类,利用CEdit接收用户输入,实现类似编辑控件的功能,通过成员函数

GetEditCtrl可以获得CEdit的引用。

●CRichEditView类,作为Rich Text Edit的视图类,提供可以按照格式显示文本的能力,

在使用时需要CRichEditDoc的支持。

●CFormView类,提供用户在资源文件中定义界面的能力,并可以将子窗口和变量进行

绑定,通过UpdateData()函数让数据在变量和子窗口之间进行交换。

UpdateData(true); //控件的value->成员变量

UpdateData(false); //控件的value<-成员变量

(3)windows图形环境介绍

C++.NET所编写的Windows的应用程序通常在视图类OnDraw函数中添加绘图代码来完成图形生成。

OnDraw函数是CView类的虚拟成员函数,它在CView类的派生类中被重新定义,在接到WM_PAINT消息后就会通过消息映射函数OnPaint调用它。

WM_PAINT消息是在某个视图窗口需要重画或刷新其显示内容时发出的。如果程序的数据被改变,则可以调用视图的Invalidate成员函数,并最终调用OnDraw函数来完成绘图。

(4)设备上下文(Device Context, DC)

图形的输出设备有显示器、打印机、绘图仪等,为了实现图形输出与设备无关,Windows 应用程序使用图形设备接口(GDI)进行图形编程。GDI给Windows提供全部绘图函数,这些函数会自动参考被称为设备上下文DC(Device Context)的数据结构,而Windows则自动将设备上下文映射到具体的物理设备上实现图形输出。

DC也称为设备描述表,是GDI中的重要的组成部分,是一种数据结构,它定义了一系列图形对象以及图形对象的属性和图形输出的图形模式。图形对象包括画线的画笔、用于填充图形的画刷、位图和调色板等。

DC表示物理设备的逻辑形式,Windows和MFC类库提供了四种类型的设备上下文:A.显示设备上下文Display DC:将显示信息输出到视频显示器。

B.打印设备上下文Printer DC:将显示信息输出到打印机。

C.内存设备上下文Memory DC:为特定的设备保存位图图像。

D.信息设备上下文Information DC:用于访问默认设备数据信息的设备上下文。

(5)绘图句柄(Handler Device Context,HDC)

设备上下文不能被应用程序直接存取,只能通过调用句柄(HDC)来间接地存取设备上下文及其属性。

MFC类库提供了不同类型的设备上下文的类,每一个类都封装了代表Windows设备上下文的句柄(HDC)和函数。

A.CDC类:

是设备上下文的基类,其它的设备上下文类都是CDC的派生类。CDC类非常庞大的,包含170多个成员函数和数据成员。利用它可以访问整个显示设备和其它输出设备。

B.CPaintDC类:

是OnPaint()函数使用的设备上下文类,代表了窗口的绘图画面。

C.CClientDC类:

是窗口客户区的设备上下文类,代表了客户区窗口的绘图画面。。

D.CWindowDC类:

类是整个窗口区域的设备上下文类,整个窗口区域即包括客户区又包括非客户区,即允许用户在显示器屏幕的任何地方绘图,包括窗口边框、标题区域。

E.CMetaFileDC类:

用于创建一个Windows图元文件的设备上下文。Windows图元文件包含了一系列GDI绘图命令。

(6)绘图上下文(Rendering Context,RC)

OpenGL的所有绘图操作是针对RC的。但RC不能直接完成绘图,必须与特定的DC相联系。在绘图时,OpenGL将绘图参数传递给RC,RC再将其经过一定的变化后,传递给与它联系的DC,完成绘图操作。

Windows下的窗口和DC都支持像素格式(PIXELFORMA T)属性,和RC有位图结构上的一致。因此,只要在创建RC时,与一个DC建立联系,OpenGL的函数就可以通过RC对应的DC画到相应的显示设备上。

OpenGL的绘图上下文的类型为HGLRC。

A.初始化RC的步骤:

①创建像素格式(PIXELFORMA TDESCRIPTOR)的DC ;

CClientDC dc(this);

int pf=ChoosePixelFormat(dc.m_hDC,&pfd);//为DC选择像素格式

BOOL rt =SetPixelFormat(dc.m_hDC,pf,&pfd);//为DC设置像素格式

②创建符合DC的RC

hglrc=wglCreateContext (dc.m_hDC );//创建符合DC的RC

B.使用RC的步骤:

①获得DC

HWND hWnd=GetSafeHwnd();//获得窗口句柄

HDC hDC=::GetDC(hWnd);//获得窗口对应的DC的句柄

②建立RC与DC联系

wglMakeCurrent(dc.m_hDC ,hglrc);

C.释放RC

①获得当前RC的句柄

wglGetCurrentContext();

②释放RC使用的DC

wglMakeCurrent(NULL,NULL);//将RC置为空,并且与DC的联系断开

③删除RC

wglDeleteContext(hglrc);//删除RC

D.OpenGL程序框架

●程序初始化:清屏、状态设置

●场景的绘制

●窗口大小变化时场景的重绘

(7)涉及绘画的OpenGL函数

●设置视图

void glViewport(GLint x,GLint y, GLsizei width, GLsizei height);

这里:x,y是视图左下角, 像素. 缺省为(0,0);

width, height是视图的宽度和高度

规范化坐标(x nd, y nd)与窗口坐标(x w, y w)的转换:

x w=( x nd+1)(width/2)+x

y w=(y nd +1)( height/2)+y

●设置当前的矩阵模式

void glMatrixMode( GLenum mode);

这里:mode

GL_MODELVIEW用于几何变换的模视矩阵模式.

GL_PROJECTION 用于坐标投影的投影矩阵模式.

GL_TEXTURE 用于纹理投影的纹理矩阵模式

●设置视点

在GL_MODELVIEW模式下设置视点,默认视点为:eye(0,0,0),center(0,0,-1),up(0,1,0)

void gluLookAt (

GLdouble eyex, GLdouble eyey, GLdouble eyez, //视点位置

GLdouble centerx,GLdouble centery,GLdouble centerz, //观察点

GLdouble upx,GLdouble upy,GLdouble upz //视点向上的方向

);

●设置单位矩阵

void glLoadIdentity(void);

●压入、弹出当前矩阵堆栈

void glPushMatrix(void);void glPopMatrix(void);

●交换缓冲区

BOOL SwapBuffers( HDC hdc );

●设置背景颜色

void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf

alpha);

●初始化缓冲区为设定的值

void glClear(GLbitfield mask );

这里:mode

GL_COLOR_BUFFER_BIT 用glClearColor()设置的颜色值,填充初始化颜色缓冲区GL_DEPTH_BUFFER_BIT 用glClearDepth()设置的值,填充初始化深度缓冲区

GL_ACCUM_BUFFER_BIT 初始化累加缓冲区

GL_STENCIL_BUFFER_BIT 初始化模板缓冲区

例如:glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );

●设置当前色

void glColor3b(GLbyte red,GLbyte green,GLbyte blue );

●定义一组顶点集,用于绘制图元

void glBegin(GLenum mode);void glEnd(void);

这里:mode

void glVertex2d( GLdouble x, GLdouble y);

void glVertex3f(GLfloat x, GLfloat y,GLfloat z);

●强制执行

void glFlush( void);

(8)图案填充开、关

glEnable(GL_POLYGON_STIPPLE);//启动多边形点画式样

glDisable(GL_POLYGON_STIPPLE); //关闭多边形点画式样

(9)置多边形点画式样

void glPolygonStipple(const GLubyte *mask);

这里mask:指向32x32的点画式样数组

2、实验步骤

步骤1:通过向导,创建项目MyDemo。

步骤2:设置项目的属性

a)设置单文档

b)取掉打印和打印预览

c )生成若干个类

应用程序向导将自动生成四个类: 1) CMyDemoApp 应用程序类; 2) CMyDemoDoc 文档类; 3) CMyDemoView 视图类; 4) CmainFrame 主框架类。 步骤3:添加OpenGL 静态库

步骤4:视图类(CMyDemoView)添加成员变量和成员函数

public: HGLRC hglrc;//绘图上下文句柄

public: void DrawScene(void);//在此函数内完成绘图操作

opengl32.lib glu32.lib glaux.lib

a )添加绘图上下文句柄成员变量:HGLRC hglrc;

b )添加成员函数:void DrawScene(void); 步骤5:为视图类(CMyDemoView)添加消息响应函数

OnCreate()、OnDestroy()、OnPaint()、

OnSize()

绘图上下文句柄

步骤6:修改框架类(CMainFrame)中的PreCreateWindow()函数,定义窗口的大小、标题等BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{ if( !CFrameWnd::PreCreateWindow(cs) )

return FALSE;

// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或样式

cs.cx=500;

cs.cy =400;

cs.lpszName="谢老师的绘图例子";

cs.style &=~FWS_ADDTOTITLE ;

return TRUE;

}

步骤7:修改视图类(CMyDemoView)的头文件MyDemoView.h

#include // 对应库文件Opengl32.lib

#include // 对应库文件Glu32.lib

#include // 对应库文件Glaux.lib

步骤8:修改视图类(CMyDemoView)的OnCreate()函数

定义像素存储格式,并创建一个OpenGL操作所必须的绘图上下文RC(Rendering Context)。使用一个PIXELFORMA TDESCRIPTOR结构来指定像素格式,使用wglCreateContext()函数创建绘图上下文RC。

int CMyDemoView::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CView::OnCreate(lpCreateStruct) == -1)

return -1;

// TODO: 在此添加您专用的创建代码

PIXELFORMATDESCRIPTOR pfd={

sizeof(PIXELFORMATDESCRIPTOR), //像素的尺寸

1, //版本号

PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER ,

//pfd必须支持窗口绘制|支持OpenGL|支持双缓存

PFD_TYPE_RGBA , //像素格式为RGBA

24, //颜色深度

0,0,0,0,0,0, //忽略颜色位数

0, //无Alpha缓存

0, //忽略偏移位

0, //无累计移位

0,0,0,0, //忽略累计缓存位

32, //深度缓存位

0, //无模板缓存

0, //无辅助缓存

PFD_MAIN_PLANE , //主要控制层

0, //保留位

0,0,0 //忽略层遮罩

};

CClientDC dc(this);

int pf=ChoosePixelFormat(dc.m_hDC,&pfd);//为DC选择像素格式

BOOL rt =SetPixelFormat(dc.m_hDC,pf,&pfd);//为DC设置像素格式

hglrc=wglCreateContext (dc.m_hDC );//创建符合DC的RC

return 0;

}

步骤9:修改视图类(CMyDemoView)的OnDestroy()函数

在OnDestroy成员中需要释放OnCreate成员中RC所占用的资源,命令wglDeleteContext 可以完成这个工作,但在释放RC之前,还需要使用命令wglMakeCurrent()断开RC与设备描述表DC的连接。

void CMyDemoView::OnDestroy()

{

// TODO: 在此处添加消息处理程序代码

CView::OnDestroy();

if(wglGetCurrentContext()!=NULL)//获得当前RC的句柄

wglMakeCurrent(NULL,NULL);//释放RC使用的DC

if(hglrc!=NULL)//若RC不为空

{

wglDeleteContext(hglrc);//删除RC

hglrc =NULL;

}

}

步骤10:修改视图类(CMyDemoView)的OnSize()函数

当视图尺寸变化时,应及时将新的客户区尺寸通知OpenGL,方能够正确在窗口客户区域显示二维场景,通过命令glViewPort完成这项工作。

void CDemoGenericView::OnSize(UINT nType, int cx, int cy)

{

// TODO: 在此处添加消息处理程序代码

GLsizei w=cx;

GLsizei h=cy ;

if(!h) return;

HWND hWnd=GetSafeHwnd();//获得窗口句柄

HDC hDC=::GetDC(hWnd);//获得窗口对应的DC的句柄

wglMakeCurrent(hDC ,hglrc);//使得RC与当前线程联系起来

glViewport(0,0,w,h);//设置一个视图,与窗口大小对应

glMatrixMode (GL_PROJECTION ); //投影模式

glLoadIdentity ();//单位投影矩阵

glMatrixMode (GL_MODELVIEW ); //模视模式

glLoadIdentity ();//单位模视矩阵

wglMakeCurrent (NULL,NULL);//将RC(hglrc)与DC的联系断开

}

步骤11:修改视图类(CMyDemoView)的OnPaint()函数,调用DrawScene()函数,显示三角形图形

void CMyDemoView::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: 在此处添加消息处理程序代码

DrawScene();//显示一个三角形图形

}

void CMyDemoView:: DrawScene(void)

{

//初始化屏幕

HWND hWnd=GetSafeHwnd();//获得窗口句柄

HDC hDC=::GetDC(hWnd);//获得窗口对应的DC的句柄

wglMakeCurrent(hDC ,hglrc);//使得RC与当前线程联系起来

glClearColor(1.0f,1.0f, 1.0f, 1.0f);//清除颜色缓冲区,并初始化为白

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );//将颜色缓冲区设置为当前颜色

//**********************************************************

//在此处添加代码进行绘图操作

gluLookAt(0.0,0.0,0.0,0.0,0.0,-1.0,0.0,1.0,0.0);//设置视点

glColor3f(1.0f,1.0f,0.0f);//设置颜色缓冲区为白色

glBegin(GL_TRIANGLES);

glColor3ub(255, 0, 0); // 定义上顶点为红色

glVertex3f(0.0f, 1.0f, 0.0f); // 绘制上顶点

glColor3ub(0, 255, 0); // 定义左下顶点为绿色

glVertex3f( -1.0f, -1.0f, 0.0f);// 绘制左下顶点

glColor3ub(255, 255, 0); // 定义右下顶点为黄色

glVertex3f(1.0f, -1.0f, 0.0f); // 绘制右下顶点

glEnd();

//**********************************************************

glFlush();//强制执行

wglMakeCurrent(NULL ,NULL);//将RC(hglrc)与DC的联系断开

SwapBuffers(hDC);//交换前后缓冲区

}

步骤12:定义菜单、视图类(CMyDemoView)添加成员变量isPattern

步骤13:为视图类(CMyDemoView)添加菜单事件处理函数OnPattern()和OnUpdatePattern()

步骤14:在MyDemoView.cpp全局区定义填充图案

步骤15:修改DrawScene(),填充三角形

3、实验效果

//定义填充图案 GLubyte pattern[]={ 0x00,0x01,0x80,0x00,0x00,0x03,0xc0,0x00, 0x00,0x07,0xe0,0x00,0x00,0x0f,0xf0,0x00, 0x00,0x1f,0xf8,0x00,0x00,0x3f,0xfc,0x00, 0x00,0x7f,0xfe,0x00,0x00,0xff,0xff,0x00, 0x01,0xff,0xff,0x80,0x03,0xff,0xff,0xc0, 0x07,0xff,0xff,0xe0,0x0f,0xff,0xff,0xf0, 0x1f,0xff,0xff,0xf8,0x3f,0xff,0xff,0xfc, 0x7f,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xfe, 0x3f,0xff,0xff,0xfc,0x1f,0xff,0xff,0xf8, 0x0f,0xff,0xff,0xf0,0x07,0xff,0xff,0xe0, 0x03,0xff,0xff,0xc0,0x01,0xff,0xff,0x80, 0x00,0xff,0xff,0x00,0x00,0x7f,0xfe,0x00, 0x00,0x3f,0xfc,0x00,0x00,0x1f,0xf8,0x00, 0x00,0x0f,0xf0,0x00,0x00,0x07,0xe0,0x00,

0x00,0x03,0xc0,0x00,0x00,0x01,0x80,0x00};

4、实验思考

(1) 定义点划(- - - - - - - - - -)的图案,则32x32的点画式样数组是什么? (2) 简述如何将绘图参数传递给RC ,再传递给DC ,以完成绘图操作。

实验2 橡皮筋技术的实现

一、实验目的

1.通过键盘输入,控制折线或多边形显示;

2.通过鼠标操作,实现橡皮筋显示;

3.输出提示字符串。

二、使用的工具软件及环境

C++.NET、OpenGL

三、实验内容

1、定义PointNode结构和链表数据结构,以及添加、清除等操作;

2、键盘输入”C”(或”c”)或其他字符,控制isPolygon为true或false,显示多边形或折线。

3、通过鼠标单击,确定折线或多边形的顶点坐标点;

4、通过鼠标移动,实现折线或多边形的橡皮筋显示。

5、通过鼠标右键,结束显示

6、输出提示字符串。

四、实验指导

1、基本要素

(1)获得设备对象

CDC* pDC=GetDC();//获得设备对象

(2)利用设备对象输出文本

CPen newpen(PS_SOLID,1,RGB(255,0,0));//定义画实线的红笔

CPen *old=pDC->SelectObject(&newpen);//保存旧的笔,替换新的笔

pDC->Rectangle(CRect(15,winHeight -80,winWidth-15,winHeight-10));//窗口

pDC->TextOut(20,winHeight-70,"单击鼠标左键,确定顶点的位置;单击右键,结束显示");

pDC->TextOut(20,winHeight-50,"移动鼠标,橡皮筋显示");

pDC->TextOut(20,winHeight-30,"键盘输入C或c,显示多边形;输入其他字符,显示折线");

pDC->SelectObject(old);//恢复旧的笔

(3)判断键盘输入

键盘消息处理:void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

鼠标消息处理:void OnLButtonDown(UINT nFlags, CPoint point)

void OnRButtonDown(UINT nFlags, CPoint point)

void OnMouseMove(UINT nFlags, CPoint point)

其中:nChar,键盘输入字符的ASCII码;

point,鼠标位置

nFlags和位屏蔽的位与,可以判断鼠标或键盘输入时是否按下辅助键。

例如:if(nFlags & MK_SHIFT) //鼠标或键盘输入时按下Shift键

2、实验步骤

步骤1:在stdafx.h中定义结构PointNode

步骤2:在视图类(CMyDemoView)中添加一些成员变量

步骤3:为视图类(CMyDemoView)添加以下成员函数:

addPoint()、clearPoint()、showPrompt()、DrawScene()

a)添加成员函数

b)addPoint()成员函数

c)clearPoint()成员函数

d)showPrompt()成员函数

计算机图形学试题附答案完整版

名词解释 将图形描述转换成用像素矩阵表示的过程称为扫描转换。 1.图形 2.像素图 3.参数图 4.扫描线 5.构造实体几何表示法 6.投影 7.参数向量方程 8.自由曲线 9.曲线拟合 10.曲线插值 11.区域填充 12.扫描转换 三、填空 1.图形软件的建立方法包括提供图形程序包、和采用专用高级语言。 2.直线的属性包括线型、和颜色。 3.颜色通常用红、绿和蓝三原色的含量来表示。对于不具有彩色功能的显示系统,颜色显示为。 4.平面图形在内存中有两种表示方法,即和矢量表示法。 5.字符作为图形有和矢量字符之分。 6.区域的表示有和边界表示两种形式。 7.区域的内点表示法枚举区域内的所有像素,通过来实现内点表示。 8.区域的边界表示法枚举区域边界上的所有像素,通过给赋予同一属性值来实现边界表示。 9.区域填充有和扫描转换填充。 10.区域填充属性包括填充式样、和填充图案。 11.对于图形,通常是以点变换为基础,把图形的一系列顶点作几何变换后,

连接新的顶点序列即可产生新的变换后的图形。 12.裁剪的基本目的是判断图形元素是否部分或全部落在之内。 13.字符裁剪方法包括、单个字符裁剪和字符串裁剪。 14.图形变换是指将图形的几何信息经过产生新的图形。 15.从平面上点的齐次坐标,经齐次坐标变换,最后转换为平面上点的坐标,这一变换过程称为。 16.实体的表面具有、有界性、非自交性和闭合性。 17.集合的内点是集合中的点,在该点的内的所有点都是集合中的元素。 18.空间一点的任意邻域内既有集合中的点,又有集合外的点,则称该点为集合的。 19.内点组成的集合称为集合的。 20.边界点组成的集合称为集合的。 21.任意一个实体可以表示为的并集。 22.集合与它的边界的并集称集合的。 23.取集合的内部,再取内部的闭包,所得的集合称为原集合的。 24.如果曲面上任意一点都存在一个充分小的邻域,该邻域与平面上的(开)圆盘同构,即邻域与圆盘之间存在连续的1-1映射,则称该曲面为。 25.对于一个占据有限空间的正则(点)集,如果其表面是,则该正则集为一个实体(有效物体)。 26.通过实体的边界来表示一个实体的方法称为。 27.表面由平面多边形构成的空间三维体称为。 28.扫描表示法的两个关键要素是和扫描轨迹。 29.标量:一个标量表示。 30.向量:一个向量是由若干个标量组成的,其中每个标量称为向量的一个分量。 四、简答题 1. 什么是图像的分辨率?

测试技术实验指导书及实验报告2006级用汇总

矿压测试技术实验指导书 学号: 班级: 姓名: 安徽理工大学 能源与安全学院采矿工程实验室

实验一常用矿山压力仪器原理及使用方法 第一部分观测岩层移动的部分仪器 ☆深基点钻孔多点位移计 一、结构简介 深基点钻孔多点位移计是监测巷道在掘进和受采动影响的整个服务期间,围岩内部变形随时间变化情况的一种仪器。 深基点钻孔多点位移包括孔内固定装置、孔中连接钢丝绳、孔口测读装置组成。每套位移计内有5~6个测点。其结构及其安装如图1所示。 二、安装方法 1.在巷道两帮及顶板各钻出φ32的钻孔。 2.将带有连接钢丝绳的孔内固定装置,由远及近分别用安装圆管将其推至所要求的深度。(每个钻孔布置5~6个测点,分别为;6m、5m、4m、3m、2m、lm或12m、10m、8m、6m、4m、2m)。 3.将孔口测读装置,用水泥药圈或木条固定在孔口。 4。拉紧每个测点的钢丝绳,将孔口测读装置上的测尺推至l00mm左右的位置后,由螺丝将钢丝绳与测尺固定在一起。 三、测试方法 安装后先读出每个测点的初读数,以后每次读得的数值与初读数之差,即为测点的位移值。当读数将到零刻度时,松开螺丝,使测尺再回到l00mm左右的位置,重新读出初读数。 ☆顶板离层指示仪 一、结构简介: 顶板离层指示仪是监测顶板锚杆范围内及锚固范围外离层值大小的一种监测仪器,在顶板钻孔中布置两个测点,一个在围岩深部稳定处,一个在锚杆端部围岩中。离层值就是围岩中两测点之间以及锚杆端部围岩与巷道顶板表面间的相对位移值。顶板离层指示仪由孔内固定装置、测量钢丝绳及孔口显示装置组成如图1所示。

二、安装方法: 1.在巷道顶板钻出φ32的钻孔,孔深由要求而定。 2.将带有长钢丝绳的孔内固定装置用安装杆推到所要求的位置;抽出安装杆后再将带有短钢丝绳的孔内固定装置推到所要求的位置。 3.将孔口显示装置用木条固定在孔口(在显示装置与钻孔间要留有钢丝绳运动的间隙)。 4.将钢丝绳拉紧后,用螺丝将其分别与孔口显示装置中的圆管相连接,且使其显示读数超过零刻度线。 三、测读方法: 孔口测读装置上所显示的颜色,反映出顶板离层的范围及所处状态,显示数值表示顶板的离层量。☆DY—82型顶板动态仪 一、用途 DY-82型顶板动态仪是一种机械式高灵敏位移计。用于监测顶底板移近量、移近速度,进行采场“初次来压”和“周期来压”的预报,探测超前支撑压力高 峰位置,监测顶板活动及其它相对位移的测量。 二、技术特征 (1)灵敏度(mm) 0.01 (2)精度(%) 粗读±1,微读±2.5 (3)量程(mm) 0~200 (4)使用高度(mm) 1000~3000 三、原理、结构 其结构和安装见图。仪器的核心部件是齿条6、指针8 以及与指针相连的齿轮、微读数刻线盘9、齿条下端带有读 数横刻线的游标和粗读数刻度管11。 当动态仪安装在顶底板之间时,依靠压力弹簧7产生的 弹力而站立。安好后记下读数(初读数)并由手表读出时间。 粗读数由游标10的横刻线在刻度管11上的位置读出,每小 格2毫米,每大格(标有“1”、“22'’等)为10毫米,微读数 由指针8在刻线盘9的位置读出,每小格为0.01毫米(共200 小格,对应2毫米)。粗读数加微读数即为此时刻的读数。当 顶底板移近时,通过压杆3压缩压力弹簧7,推动齿条6下 移,带动齿轮,齿轮带动指针8顺时针方向旋转,顶底板每 移近0.01毫米,指针转过1小格;同时齿条下端游标随齿条 下移,读数增大。后次读数减去前次读数,即为这段时间内的顶底板移近量。除以经过的时间,即得

人机交互技术实验二熟悉认知心理学和人机工程学

重庆邮电大学移通学院学生实验报告 实验名称:熟悉认知心理学和人机工程学 专业班级:数字媒体技术 02141401 姓名:罗钧 学号: 2014210xxx 实验日期:

实验二:熟悉认知心理学和人机工程学 一、实验目的 (1)了解人机交互技术的研究内容; (2)熟悉认知心理学的基本概念和主要内容; (3)熟悉人机工程学的基本概念和主要内容。 二、工具/准备工作 需要准备一台带有浏览器,能够访问因特网的计算机。 三、实验内容与步骤 1.认知学的概念 (1)分析“人机界面学”的主要研究内容。 人机界面(Human Machine Interaction,简称HMI),又称用户界面或使用者界面,是人与计算机之间传递、交换信息的媒介和对话接口,是计算机系统的重要组成部分。是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。凡参与人机信息交流的领域都存在着人机界面。 (2)给出“认知心理学”的定义。 认知心理学是二十世纪50年代中期在西方兴起的一种心理学思潮,是作为人类行为基础的心理机制,其核心是输入和输出之间发生的内部心理过程。它与西方传统哲学也有一定联系,其主要特点是强调知识的作用,认为知识是决定人类行为的主要因素。 认知心理学是最新的心理学分支之一,从1950至1960年代间才发展出来的,到70年代成为西方心理学的主要流派。1956年被认为是认知心理学史上的重要年份。这一年几项心理学研究都体现了心理学的信息加工观点。如Chomsky的语言理论和纽厄尔(Alan Newell)和西蒙(Herbert Alexander simon)的“通用问题解决者”模型。“认知心理学”第一次在出版物出现是在1967年Ulrich Neisser的新书。而唐纳德·布罗德本特于1958年出版的《知觉与传播》一书则为认知心理学取向立下了重要基础。此后,认知心理取向的重点便在唐纳德·布罗德本特所指出的认知的讯息处理模式--一种以心智处理来思考与推理的模式。因此,思考与推理在人类大脑中的运作便像电脑软件在电脑里运作相似。认知心理学理论时常谈到输入、表征、计算或处理,以及输出等概念。 (3)给出“软件心理学”的定义。 软件心理学(software psychology)用实验心理学的技术和认知心理学的概念来进行软件生产的方法,即将心理学和计算机系统相结合而产生的新学科。 (4)为什么说“了解并遵循认知心理学的原理是进行人机交互界面设计的基础”?请简单阐述之。 人机界面设计,主要用理论来指导设计,了解认知心理学,一方面防止出错,另一方面用以提高工作效率。了解认知心理学,可以使设计者对用户,即使用计算机的人,有一个较为清晰的认识,也就是说对人的心理基础要有所了解,以提高人机界面设计的水平,

计算机图形学模拟试卷和答案教程文件

计算机图形学模拟试 卷和答案

北京语言大学网络教育学院 《计算机图形学》模拟试卷一 注意: 1.试卷保密,考生不得将试卷带出考场或撕页,否则成绩作废。请监考老师负责监督。 2.请各位考生注意考试纪律,考试作弊全部成绩以零分计算。 3.本试卷满分100分,答题时间为90分钟。 4.本试卷分为试题卷和答题卷,所有答案必须答在答题卷上,答在试题卷上不给分。 一、【单项选择题】(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在答题卷相应题号处。 1、计算机图形学与计算机图像学(图像处理)的关系是()。 [A] 计算机图形学是基础,计算机图像学是其发展 [B] 不同的学科,研究对象和数学基础都不同,但它们之间也有可相互转换部分 [C] 同一学科在不同场合的不同称呼而已 [D] 完全不同的学科,两者毫不相干 2、多边形填充算法中,错误的描述是()。 [A] 扫描线算法对每个象素只访问一次,主要缺点是对各种表的维持和排序的耗费较大 [B] 边填充算法基本思想是对于每一条扫描线与多边形的交点,将其右方象素取补 [C] 边填充算法较适合于帧缓冲存储器的图形系统 [D] 边标志算法也不能解决象素被重复访问的缺点 仅供学习与交流,如有侵权请联系网站删除谢谢0

3、在多边形的逐边裁剪法中,对于某条多边形的边(方向为从端点S到端点P)与某条裁剪线(窗口的某一边)的比较结果共有以下四种情况,分别需输出一些顶点。哪种情况下输出的顶点是错误的?() [A] S和P均在可见的一侧,则输出点P [B] S和P均在不可见的一侧,,则输出0个顶点 [C] S在可见一侧,,P在不可见一侧,则输出线段SP与裁剪线的交点和S [D] S在不可见的一侧,P在可见的一侧,则输出线段SP与裁剪线的交点和P 4、下列关于反走样的叙述中,错误的论述为()。 [A] 把像素当作平面区域来采样[B] 提高分辨率 [C] 增强图像的显示亮度[D] 采用锥形滤波器进行加权区域采 样 5、下列关于平面几何投影的叙述中,错误的论述为()。 [A] 透视投影的投影中心到投影面的距离是有限的 [B] 在平行投影中不可能产生灭点 [C] 在透视投影中,一组平行线的投影仍保持平行 [D] 透视投影与平行投影相比,视觉效果更真实,但不一定能真实反映物体的精确尺寸和形状 6、下列关于Bezier曲线的论述中,错误的论述为()。 [A] 曲线及其控制多边形在起点和终点具有同样的几何性质 [B] 在起点和终点处的切线方向和控制多边形第一条边和最后一条边的方向相同 [C] n个控制点控制一条n次Bezier曲线 [D] 某直线与平面Bezier曲线的交点个数不多于该直线与控制多边形的交点个数 7、下面给出的四个选项中,()不是Bezier曲线具有的性质。 [A] 局部性[B] 几何不变性[C] 变差缩减性[D] 凸包性 8、分辨率为2048×1024的显示器需要多少字节位平面数为8的帧缓存?() 仅供学习与交流,如有侵权请联系网站删除谢谢1

混凝土结构实验指导书及实验报告(学生用)

土木工程学院 《混凝土结构设计基本原理》实验指导书 及实验报告 适用专业:土木工程周淼 编 班级::学 号: 理工大学 2018 年9 月

实验一钢筋混凝土梁受弯性能试验 一、实验目的 1.了解适筋梁的受力过程和破坏特征; 2.验证钢筋混凝土受弯构件正截面强度理论和计算公式; 3.掌握钢筋混凝土受弯构件的实验方法及荷载、应变、挠度、裂缝宽度等数据的测试技术 和有关仪器的使用方法; 4.培养学生对钢筋混凝土基本构件的初步实验分析能力。 二、基本原理当梁中纵向受力钢筋的配筋率适中时,梁正截面受弯破坏过程表现为典型的三个阶段:第一阶段——弹性阶段(I阶段):当荷载较小时,混凝土梁如同两种弹性材料组成的组合梁,梁截面的应力呈线性分布,卸载后几乎无残余变形。当梁受拉区混凝土的最大拉应力达到混凝土的抗拉强度,且最大的混凝土拉应变超过混凝土的极限受拉应变时,在纯弯段某一薄弱截面出现首条垂直裂缝。梁开裂标志着第一阶段的结束。此时,梁纯弯段截面承担的弯矩M cr称为开裂弯矩。第二阶段——带裂缝工作阶段(II阶段):梁开裂后,裂缝处混凝土退出工作,钢筋应力急增,且通过粘结力向未开裂的混凝土传递拉应力,使得梁中继续出现拉裂缝。压区混凝土中压应力也由线性分布转化为非线性分布。当受拉钢筋屈服时标志着第二阶段的结束。此时梁纯弯段截面承担的弯矩M y称为屈服弯矩。第三阶段——破坏阶段(III阶段):钢筋屈服后,在很小的荷载增量下,梁会产生很大的变形。裂缝的高度和宽度进一步发展,中和轴不断上移,压区混凝土应力分布曲线渐趋丰满。当受压区混凝土的最大压应变达到混凝土的极限压应变时,压区混凝土压碎,梁正截面受弯破坏。此时,梁承担的弯矩M u 称为极限弯矩。适筋梁的破坏始于纵筋屈服,终于混凝土压碎。整个过程要经历相当大的变形,破坏前有明显的预兆。这种破坏称为适筋破坏,属于延性破坏。 三、试验装置

基于人机工程学的产品改良设计课程实验研究_0

基于人机工程学的产品改良设计课程实验 研究 [摘要]本文为《工业产品再设计》课程设计了一套基于人机工程学原理的产品改良设计实验方案。实验原理是运用人体生理结构反形与目标产品形态进行合成,得出新的产品造型。实验运用逆向工程技术与Morphing设计方法得出产品形态设计结果。本实验已应用于教学实践中,教学反馈证明学生容易掌握实验方法,且结论与设计效果良好。 [关键词]逆向工程;人机工程学;改良设计;实验 [DOI]10.13939/https://www.360docs.net/doc/a67876915.html,ki.zgsc.2015.20.251 为了能够在市场竞争中取得优势,很多企业不断改良产品设计,推出新产品。因此,产品改良设计的原理与方法是工业设计专业学生所必须掌握的。《工业产品再设计》课程即是针对如何改进现有产品的工业设计专业课程。[1]人机工程学是工业设计中重要的辅助手段。[2]在工业设计领域,人机工程学为衡量产品使用舒适度提供了参考和评价标准。而在人机工程学应用于工业设计实践方面,Shenchang Eric Chen提出形态混合迁变的方法,即可以运用人体尺度数据与产品数据合成新产品造型。本文所介绍的实验方案,运用逆向工程[1][3]的方法:首先用油泥、发泡泡沫等材料

制作人体生理构造反形,再利用shape averaging[3](Morphing)法对人体反形与产品形态进行混合迁变,得出新的产品形态。本文列举两例自行车把改良设计实验。 1 实验1 本实验运用手掌持握反形(有手指凹陷)与目标车把合成新的车把造型,目的在于改良和优化现有车把与手掌生理结构的吻合度。使用带有手指凹陷构造的手掌持握反形,可以得出持握稳定的车把设计结果。 (1)利用油泥手工制作手掌持握反形(有手指凹陷),并利用数字化三维扫描仪和Stereo 3D获取其三维数据(图1)。 (2)利用数字化三维扫描仪获取目标车把(图2)三维数据。 (3)分别抽离等量的手掌持握反形(有手指凹陷)与目标车把的截面轮廓线。 (4)将两组截面轮廓线置于同一坐标系,并缩放调整位置与尺度。 (5)将两组轮廓线进行混合运算,并采取不同的Morphing比例,选择最佳混合迁变结果,其加权比例为3∶7;图4左侧为目标车把局部截面轮廓线,右侧为油泥手掌持握反形(有手指凹陷)局部截面轮廓线,红色为所选最佳结果。 (6)以步骤(5)中的结果,创建新曲面,生成最终

计算机图形学第二版课后习题答案

第一章绪论 概念:计算机图形学、图形、图像、点阵法、参数法、 图形的几何要素、非几何要素、数字图像处理; 计算机图形学和计算机视觉的概念及三者之间的关系; 计算机图形系统的功能、计算机图形系统的总体结构。 第二章图形设备 图形输入设备:有哪些。 图形显示设备:CRT的结构、原理和工作方式。 彩色CRT:结构、原理。 随机扫描和光栅扫描的图形显示器的结构和工作原理。 图形显示子系统:分辨率、像素与帧缓存、颜色查找表等基本概念,分辨率的计算 第三章交互式技术 什么是输入模式的问题,有哪几种输入模式。 第四章图形的表示与数据结构 自学,建议至少阅读一遍 第五章基本图形生成算法 概念:点阵字符和矢量字符; 直线和圆的扫描转换算法; 多边形的扫描转换:有效边表算法; 区域填充:4/8连通的边界/泛填充算法;

内外测试:奇偶规则,非零环绕数规则; 反走样:反走样和走样的概念,过取样和区域取样。 5.1.2 中点 Bresenham 算法(P109) 5.1.2 改进 Bresenham 算法(P112) 习题答案

习题5(P144) 5.3 试用中点Bresenham算法画直线段的原理推导斜率为负且大于1的直线段绘制过程(要求写清原理、误差函数、递推公式及最终画图过程)。(P111) 解: k<=-1 |△y|/|△x|>=1 y为最大位移方向 故有 构造判别式: 推导d各种情况的方法(设理想直线与y=yi+1的交点为Q): 所以有: y Q-kx Q-b=0 且y M=y Q d=f(x M-kx M-b-(y Q-kx Q-b)=k(x Q-x M) 所以,当k<0, d>0时,M点在Q点右侧(Q在M左),取左点 P l(x i-1,y i+1)。 d<0时,M点在Q点左侧(Q在M右),取右点 Pr(x i,y i+1)。 d=0时,M点与Q点重合(Q在M点),约定取右点 Pr(x i,y i+1) 。 所以有 递推公式的推导: d2=f(x i-1.5,y i+2) 当d>0时, d2=y i+2-k(x i-1.5)-b 增量为1+k =d1+1+k

土工实验指导书及实验报告

土工实验指导书及实验报告编写毕守一 安徽水利水电职业技术学院 二OO九年五月

目录 实验一试样制备 实验二含水率试验 实验三密度试验 实验四液限和塑限试验 实验五颗粒分析试验 实验六固结试验 实验七直接剪切试验 实验八击实试验 土工试验复习题

实验一试样制备 一、概述 试样的制备是获得正确的试验成果的前提,为保证试验成果的可靠性以及试验数据的可比性,应具备一个统一的试样制备方法和程序。 试样的制备可分为原状土的试样制备和扰动土的试样制备。对于原状土的试样制备主要包括土样的开启、描述、切取等程序;而扰动土的制备程序则主要包括风干、碾散、过筛、分样和贮存等预备程序以及击实等制备程序,这些程序步骤的正确与否,都会直接影响到试验成果的可靠性,因此,试样的制备是土工试验工作的首要质量要素。 二、仪器设备 试样制备所需的主要仪器设备,包括: (1)孔径0.5mm、2mm和5mm的细筛; (2)孔径0.075mm的洗筛; (3)称量10kg、最小分度值5g的台秤; (4)称量5000g、最小分度值1g和称量200g、最小分度值0.01g的天平;

(5)不锈钢环刀(内径61.8mm、高20mm;内径79.8mm、高20mm或内径61.8mm、高40mm); (6)击样器:包括活塞、导筒和环刀; (7)其他:切土刀、钢丝锯、碎土工具、烘箱、保湿器、喷水设备、凡士林等。 三、试样制备 (一)原状土试样的制备步骤 1、将土样筒按标明的上下方向放置,剥去蜡封和胶带,开启土样筒取土样。 2、检查土样结构,若土样已扰动,则不应作为制备力学性质试验的试样。 3、根据试验要求确定环刀尺寸,并在环刀内壁涂一薄层凡士林,然后刃口向下放在土样上,将环刀垂直下压,同时用切土刀沿环刀外侧切削土样,边压边削直至土样高出环刀,制样时不得扰动土样。 4、采用钢丝锯或切土刀平整环刀两端土样,然后擦净环刀外壁,称环刀和土的总质量。 5、切削试样时,应对土样的层次、气味、颜色、夹杂物、裂缝和均匀性进行描述。 6、从切削的余土中取代表性试样,供测定含水率以及颗粒分析、界限含水率等试验之用。

人机工程学实验报告资料

人机工程学实验报告Hust工业设计专业,人机工程课程实验报告

必做实验(7个): 一、镜画仪: 是一项目动作技能迁移的实验。因通过镜子反射,和原图形相比镜中图像是上下倒置而左右不变。 实验一 实验二 自变量:试验次数 因变量:出错次数、使用时间 实验数据分析结果:1.随着实验次数的增加,实验者不变,但是其所用时间及错误次数都在变少,熟练程度明显增加。 2.在同样的情况和同样的图案上,实验的后一次测验比前一次的测验有所进步,就为正迁移效果。

二、光亮度辨别仪 光亮度辨别仪的作用:心理学中常用的一种视觉实验仪器。它可以测定明度差别阈限,也可以制作明度量表。 自变量:光亮度真实值 因变量:实际测量值、差值 实验数据分析结果:随着光亮度的增加,实验者对于光的敏感度下降,误差变大。 应用范围:可调节亮度的台灯,它的优点在于调节亮度的装置消耗的电能极少,节约了电能,减少了不必要的损耗,灯的亮度可根据不同的天气,不同的时间,人们不同的需求,调节不同的亮度,方便人们的生活。

三、瞬时记忆实验仪 仪器同时呈现一组随机数字或字母,在部分报告法实验中,要求被试再现当时指定的一部分,然后在指定的时间内通过大脑记录下来。 自变量:瞬时刺激时间 因变量:记忆保存量 实验数据分析结果:人的大脑在瞬时记忆中,记忆的时间越长,准确率越高。

四、记忆广度测试仪 适用于心理特点测定中的数字记忆广度实验和提高记忆力的训练。并具有同时测量被试视觉、记忆、反应速度三者结合能力的功能,是一种常用的心理学测量仪器。 自变量:不同的实验者 因变量:记忆广度分数、出错位数 实验数据分析结果:因为人与人的不同,其记忆能力不同,有记忆广度大的,也有记忆广度小的。 应用范围:用在小孩子的智力玩具上,刺激小孩子对数字的认识和敏感性,提高记忆力和反映能力,同时可以很好的帮助小孩子注意力的集中。

计算机图形学课后习题答案

第三章习题答案 3.1 计算机图形系统的主要功能是什么? 答:一个计算机图形系统应具有计算、存储、输入、输出、交互等基本功能,它们相互协作,完成图形数据的处理过程。 1. 计算功能 计算功能包括: 1)图形的描述、分析和设计;2)图形的平移、旋转、投影、透视等几何变换; 3)曲线、曲面的生成;4)图形之间相互关系的检测等。 2. 存储功能 使用图形数据库可以存放各种图形的几何数据及图形之间的相互关系,并能快速方便地实现对图形的删除、增加、修改等操作。 3. 输入功能 通过图形输入设备可将基本的图形数据(如点、线等)和各种绘图命令输入到计算机中,从而构造更复杂的几何图形。 4. 输出功能 图形数据经过计算后可在显示器上显示当前的状态以及经过图形编辑后的结果,同时还能通过绘图仪、打印机等设备实现硬拷贝输出,以便长期保存。 5. 交互功能 设计人员可通过显示器或其他人机交互设备直接进行人机通信,对计算结果和图形利用定位、拾取等手段进行修改,同时对设计者或操作员输入的错误给以必要的提示和帮助。 3.2 阴极射线管由哪些部分组成?它们的功能分别是什么? 答:CRT主要由阴极、电平控制器(即控制极)、聚焦系统、加速系统、偏转系统和阳极荧光粉涂层组成,这六部分都在真空管内。 阴极(带负电荷)被灯丝加热后,发出电子并形成发散的电子云。这些电子被电子聚集透镜聚焦成很细的电子束,在带正高压的阳极(实际为与加速极连通的CRT屏幕内侧的石墨粉涂层,从高压入口引入阳极高电压)吸引下轰击荧光粉涂层,而形成亮点。亮点维持发光的时间一般为20~40mS。 电平控制器是用来控制电子束的强弱的,当加上正电压时,电子束就会大量通过,在屏幕上形成较亮的点,当控制电平加上负电压时,依据所加电压的大小,电子束被部分或全部阻截,通过的电子很少,屏幕上的点也就比较暗。所以改变阴极和 控制电平之间的电位差,就可调节电子 束的电流密度,改变所形成亮点的明暗 程度。 利用偏转系统(包括水平方向和 垂直方向的偏转板)可将电子束精确定 位在屏幕的任意位置上。只要根据图形 的几何坐标产生适当的水平和垂直偏转磁场(或水平和垂直偏转板静电场),图 2.2CRT原理图

CAD上机实验指导书及实验报告

北京邮电大学世纪学院 实验、实习、课程设计报告撰写格式与要求 (试行) 一、实验报告格式要求 1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。 2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。 4、实验报告中的实验原始记录,须经实验指导教师签字或登记。 二、实习报告、课程设计报告格式要求 1、采用统一的封面。 2、根据教学大纲的要求手写或打印,手写一律用钢笔书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 三、报告内容要求 1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。 2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。 3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、设计实现与调试、收获体会、参考资料等方面内容。 北京邮电大学世纪学院 教务处 2009-8

实验报告 课程名称计算机绘图(CAD) 实验项目AutoCAD二维绘图实验 专业班级 姓名学号 指导教师实验成绩 2016年11月日

棒框仪实验报告

棒框仪实验报告 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

人机工程学 报告书 姓名:董思洋 班级:工业设计10-3班学号: 二零一二年

棒框仪实验指导书 陈亚明编 艺术与设计学院 二0一二年二月

棒框仪实验 一、实验目的 本仪器可测量一个倾斜的框对判断一根棒的垂直性影响的程度。被试的判断受倾斜的框的影响,相当于周围环境条件变化的影响,所以此 本仪器可以通过被试的认知方式来测量人格特性。 二、实验方法 两人一组,正确使用棒框仪进行测量: 1、一个放在平台上的观察筒被试观察面为圆白背景面板上有一个黑色正方形框和黑色棒。棒的倾斜度可由被试通过旋钮调节。 2、主试面有一个半圆形的刻度,圆弧内指针指示框的倾斜度,中央指针指示棒的倾斜度。主试调节面板上旋钮改变框与棒的倾斜度。 3、在平台上有一个水平仪,可通过旋转平台下面的螺丝将平台调整到水平的位置。此棒框仪的优点在于没有电源的条件下可以使用。 三、测量器具 人体形体测量尺350×165×215mm的棒框仪 四、实验内容 (1)将平台调到水平位置。 (2)根据实验的要求,主试将框和棒调到在一定的倾斜度。 (3)要求被试通过观察筒进行观察,并根据自己感觉将棒调整得与地面垂直。(4)从刻度上读出的棒的倾斜度,即记录下误差的度数和方向。 (5)主试调节不同的方框的倾斜度,即不同的场条件下,重复实验。由被试调整出的棒倾斜度总结出框对棒的影响,从而研究被试的场依存性。 五、实验要求 1.每位同学都要参与测量、被测量过程; 2.记录数据以度为单位 3.测量数据要准确,测量精确;

(完整word版)实验二人体上肢动作特性实验.doc=安全人机工程学=湖南工学院

实验二人体上肢动作特性实验 人体上肢动作特性涉及到灵活性、稳定性及准确性。人体动作的灵活性是指操作时的动作速度与频率。动作速度是指肢体在单位时间内移动的路程;动作频率是指每秒钟或每分钟动作重复的次数。人体动作的准确性可从动作形式(方向和动作量)、速度和力量三个方面考察。这三个方面配合恰当,动作才能与客观要求相符合,才能准确。通过以下实验可了解人体上肢动作的特性以及影响动作灵活性、准确性、稳定性的因素。 实验二-1 手指的灵活性测定 一、实验目的 人体动作的灵活性是指操作时的动作速度与频率。手指灵活性测试可用于测定手指、手、手腕的灵活性,也可测定手和眼的协调能力。 二、实验原理 通过将金属细棒插入实验板的圆孔中所需时间,测试手指动作灵活性以及手眼协调能力。比较手指插棒的运动顺序不同的所需时间验证人体上肢运动特性受影响的因素。 三、实验装置与测试仪器 采用BD-II-601型手指灵活性测试仪(见图2-1),该仪器的主要技术参数如下: 1.实验板圆孔:直径1.6mm,100个,各孔中心距20mm; 2.金属插棒:直径1.5mm,长度20mm,110个; 3.记时:1ms~9 999s,4位数字显示,内藏式整体结构; 4.记时开始与结束可按键,也可以由金属棒插入左上角第1个孔与右上角后1个孔自动进行; 5.实验用镊子:1把。 图2-1 手指灵活性测试仪

图2-2 手指灵活性测试仪面板示意图 四、实验内容 1.金属插棒放入左侧槽中,优势手拿起右侧槽中的镊子; 2.被试用镊子将左侧槽中的金属棒插入实验板的圆孔中,插入顺序分以下四种: ①先插开始位,从上至下,再从下至上,……依次逐列插入,最后插终止位; ②先插开始位,从上至下,再从第2列开始由上至下,……依次逐列插入,最后插终止位; ③先插开始位,从左至右,再从第2行由右边第一个开始至左,……依次逐行插入,最后插终止位; ④先插开始位,从左至右,再从第二行开始由左至右,……依次逐行插入,最后插终止位; 记时会自动开始,到插终止位时结束,并记录插入100个棒所需时间于表2-2; 3.每次重新开始需按“复位”键清零 五、数据整理与分析 1.测量数据 表2-2 手指的灵活性测定数据 顺序 ①②③④ 次数 1 2 3 4 平均时间

计算机图形学试卷及参考答案

年级班姓名学号成绩 一、填空题(每空1分,共30分) 1、计算机图形学是用计算机建立、存储、处理某个对象的模型,并根据模型 2、计算机图形系统功能主要有计算功能、存储功能、输入功能、输出功能、 交互功能。 3、区域的表示有内点表示和边界表示两种形式。 4、字符裁剪的策略有串精度裁剪、字符精度裁剪、基于构成字符最小元素的 裁剪。 5、图形软件系统提供给用户的三种基本输入方式包括请求方式、采样方式、事件方式。 6、常见的图形绘制设备有喷墨打印机、笔式绘图机、激光打印机。 7、字符生成常用的描述方法有点阵式和轮廓式。 8、在交互式图形输入过程中,常用的控制方式有请求、样本、事件和混合四种形式。 9、用于八连通区域的填充算法可以用于四连通区域的填充,但用于四连通区域的填充算法并不适用于八连通区域的填充。 10、能够在人们视觉系统中形成视觉印象的对象称为图形。 二、不定项选择题(每题2分,共20分) 1、计算机图形显示器一般使用(A)颜色模型。 (A)RGB (B) CMY (C)HSV (D) HLS 2、计算机图形系统功能不包括(D)。 (A)计算功能(B) 存储功能 (C)交互功能(D)修饰功能 3、多边形填充算法中,正确的描述是(ABC) (A)扫描线算法对每个象素只访问一次,主要缺点是对各种表的维持和排序

的耗费较大 (B)边填充算法基本思想是对于每一条扫描线与多边形的交点,将其右方象 素取补 (C)边填充算法较适合于帧缓冲存储器的图形系统 (D)边标志算法也不能解决象素被重复访问的缺点 4、在交互式图形输入过程中,常用的控制方式不包括(C)。 (A)样本(B)事件(C)交互(D)混合 5、下列有关平面几何投影的叙述,错误的是(D ) (A)透视投影又可分为一点透视、二点透视、三点透视 (B)斜投影又可分为斜等测、斜二测 (C)正视图又可分为主视图、侧视图、俯视图 (D)正轴测又可分为正一测、正二测、正三测 6、视频信息的最小单位是(A ) (A)帧(B)块(C)像素(D)字 7、在透视投影中,主灭点的最多个数是(C) (A)1 (B)2 (C)3 (D)4 8、扫描线多边形填充算法中,对于扫描线同各边的交点的处理具有特殊性。穿过某两条边的共享顶点的扫描线与这两条边的交点数只能计为(B )交点: (A)0 个(B)1个 (C)2个(D)3个 9、用于减少和消除用离散量表示连续量引起的失真效果的技术称为(B)(A)走样(B)反走样(C)填充(D)以上都不是 10、分辨率为1024×1024的显示器需要(C)字节位平面数为16的帧缓存?(A)512KB (B)1MB (C)2MB (D)3MB 三、名词解释(每题3分,共15分) 1、计算机图形系统:用来生成、处理和显示图形的一整套硬件和软件。

《流体力学》课程实验(上机)指导书及实验报告格式

《流体力学》课程实验指导书袁守利编 汽车工程学院 2005年9月

前言 1.实验总体目标、任务与要求 1)学生在学习了《流体力学》基本理论的基础上,通过伯努利方程实验、动量方程实 验,实现对基本理论的验证。 2)通过实验,使学生对水柱(水银柱)、U型压差计、毕托管、孔板流量计、文丘里流量计等流体力学常用的测压、测流量装置的结构、原理和使用有基本认识。 2.适用专业 热能与动力工程 3.先修课程 《流体力学》相关章节。 4.实验项目与学时分配 5. 实验改革与特色 根据实验内容和现有实验条件,在实验过程中,采取学生自己动手和教师演示相结合的方法,力求达到较好的实验效果。

实验一伯努利方程实验 1.观察流体流经实验管段时的能量转化关系,了解特定截面上的总水头、测压管水头、压强水头、速度水头和位置水头间的关系,从而加深对伯努利方程的理解和认识。 2.掌握各种水头的测试方法和压强的测试方法。 3.掌握流量、流速的测量方法,了解毕托管测速的原理。 二、实验条件 伯努利方程实验仪 三、实验原理 1.实验装置: 图一伯努利方程实验台 1.水箱及潜水泵 2.上水管 3.电源 4.溢流管 5.整流栅 6.溢流板 7.定压水箱 8.实验 细管9. 实验粗管10.测压管11.调节阀12.接水箱13.量杯14回水管15.实验桌 2.工作原理 定压水箱7靠溢流来维持其恒定的水位,在水箱下部装接水平放置的实验细管8,水经实验细管以恒定流流出,并通过调节阀11调节其出水流量。通过布置在实验管四个截面上的四组测压孔及测压管,可以测量到相应截面上的各种水头的大小,从而可以分析管路中恒定流动的各种能量形式、大小及相互转化关系。各个测量截面上的一组测压管都相当于一组毕托管,所以也可以用来测管中某点的流速。 电测流量装置由回水箱、计量水箱和电测流量装置(由浮子、光栅计量尺和光电子

《安全人机工程学》实验报告书 程洁 2

安全人机工程学 实 验 报 告 书 姓名:程洁 班级:安工1101 学号:201107420105 时间: 2013 年 12 月 31日

目录 实验一手指灵活性测试实验 (1) 实验二动作稳定性实验 (3) 实验三双手协调能力测试 (8) 实验四暗适应实验 (10) 实验五速度知觉测试实验 (13) 实验六明度实验 (17) 实验七反应时运动时测定实验 (18) 实验八深度知觉测定实验 (21) 实验九亮点闪烁仪实验 (25)

实验一手指灵活性测试实验 一、实验目的 手指灵活性测试是测定手指尖、手、手腕、手臂的灵活性,也可测定手和眼的协调能力。 本实验的要求为: 1. 学习和熟悉手指灵活性测试仪的用法; 2. 了解人的手指灵活性及其个体差异性。 二、实验仪器 EP707A 手指灵活性测试仪 (一)主要技术指标 1. 手指灵活性测试100孔(直径1.6mm),各孔中心距20mm; 2. 指尖灵活性测试M6、M5、M4、M3螺钉各25个 3. 计时范围0~9999.99秒 4. 电源电压AC220V/50HZ (二)仪器 1. 结构图 图1 手指灵活性测试仪

2. 记时器:1ms~9999 S,4位数字显示,内藏式整体结构 3. 金属插棒:直径1.5mm,长度20mm,110个 4. 实验用镊子:1把 三、实验步骤 1. 手指灵活性测试(插孔插板) 接上电源,打开电源开关,此时计时器显示为0000.00,然后插上手指灵活性插板,按复位键被试即可进行测试,当被试用镊子钳住?1.5mm插针插入起点时,计时器开始计时,然后依次用镊子(从左到右,从上到下)钳住?1.5mm插针插满100个孔至终点时计时器停止计时,此时计时器显示时间为被试做完这一实验所用总时间。 当测试第二次实验时只要按下复位键计时器全部复位,即可反复测试。 2. 手指尖灵活性测试(螺栓插板) 接上电源打开电源开关,此时计时器显示为0000.00,然后插上指尖灵活性插板(装有M6、M5、M4、M3螺栓各25个),按复位键被试即可进行测试,当被试放入起始点第一个M6垫圈起,计时器开始计时,然后拧上螺母,依次操作至终点最后一个M3垫圈时,计时器停止计时时,然后拧上螺母,此时计时器显示时间为被试做完这一实验所用总时间。 当测试第二次实验时只要按下复位键计时器全部复位,即可反复测试。 四、实验数据及报告 1. 数据记录 2. 数据分析 比较从左到右和从右到左这两种情况手指或手指尖的灵活性。 从自身实验数据来看,从右到左的手指灵活性要比从左到右的灵活性高。

《计算机图形学》试卷及答案

一、填空题(每空0.5分,共 1 0 分) 1、 计算机图形学中的图形是指由点、线、面、体等 和明暗、灰度(亮度)、色 彩等 构成的,从现实世界中抽象出来的带有灰度、色彩及形状的图或形。 2、 一个计算机图形系统至少应具有 、 、输入、输出、 等 基本功能。 3、 常用的字符描述方法有:点阵式、 和 。 4、 字符串剪裁的策略包括 、 和笔划/像素精确度 。 5、 所谓齐次坐标就是用 维向量表示一个n 维向量。 6、 投影变换的要素有:投影对象、 、 、投影线和投影。 7、 输入设备在逻辑上分成定位设备、描画设备、定值设备、 、拾取设备 和 。 8、 人机交互是指用户与计算机系统之间的通信,它是人与计算机之间各种符号和动作 的 。 9、 按照光的方向不同,光源分类为: , , 。 10、从视觉的角度看,颜色包含3个要素:即 、 和亮度。 二、单项选择题(每题 2分,共 30 分。请将正确答案的序号填在 题后的括号内) 1、在CRT 显示器系统中,( )是控制电子束在屏幕上的运动轨迹。 A. 阴极 B. 加速系统 C. 聚焦系统 D. 偏转系统 2、分辨率为1024×1024的显示器需要多少字节位平面数为16的帧缓存( ) A. 512KB B. 1MB C. 2MB D. 3MB? 3、计算机图形显示器一般使用什么颜色模型( ) A. RGB B. CMY C. HSV D. HLS??? 4、下面哪个不属于图形输入设备( ) A. 键盘 B. 绘图仪 C. 光笔 D. 数据手套 5、多边形填充算法中,错误的描述是( )。 A. 扫描线算法对每个象素只访问一次,主要缺点是对各种表的维持和排序的耗费较大 B. 边填充算法基本思想是对于每一条扫描线与多边形的交点,将其右方象素取补 C. 边填充算法较适合于帧缓冲存储器的图形系统 D. 边标志算法也不能解决象素被重复访问的缺点 6、 在扫描线填色算法中,扫描线与顶点相交时,对于交点的取舍问题,下述说法正确的是( )。 A. 当共享顶点的两条边分别落在扫描线的两边时,交点只算2个 B. 当共享交点的两条边在扫描线的同一边时,若该点是局部最高点取1个

电磁场实验指导书及实验报告

CENTRAL SOUTH UNIVERSITY 题目利用Matlab模拟点电荷电场的分布姓名xxxx 学号xxxxxxxxxx 班级电气xxxx班 任课老师xxxx 实验日期2010-10

电磁场理论 实验一 ——利用Matlab 模拟点电荷电场的分布 一.实验目的: 1.熟悉单个点电荷及一对点电荷的电场分布情况; 2.学会使用Matlab 进行数值计算,并绘出相应的图形; 二.实验原理: 根据库伦定律:在真空中,两个静止点电荷之间的作用力与这两个电荷的电量乘积成正比,与它们之间距离的平方成反比,作用力的方向在两个电荷的连线上,两电荷同号为斥力,异号为吸力,它们之间的力F 满足: R R Q Q k F ? 212 = (式1) 由电场强度E 的定义可知: R R kQ E ? 2 = (式2) 对于点电荷,根据场论基础中的定义,有势场E 的势函数为 R kQ U = (式3) 而 U E -?= (式4) 在Matlab 中,由以上公式算出各点的电势U ,电场强度E 后,可以用Matlab 自带的库函数绘出相应电荷的电场分布情况。 三.实验内容: 1. 单个点电荷 点电荷的平面电力线和等势线 真空中点电荷的场强大小是E=kq /r^2 ,其中k 为静电力恒量, q 为电量, r 为点电荷到场点P(x,y)的距离。电场呈球对称分布, 取电量q> 0, 电力线是以电荷为起点的射线簇。以无穷远处为零势点, 点电荷的电势为U=kq /r,当U 取

常数时, 此式就是等势面方程.等势面是以电荷为中心以r 为半径的球面。 平面电力线的画法 在平面上, 电力线是等角分布的射线簇, 用MATLAB 画射线簇很简单。取射线的半径为( 都取国际制单位) r0=, 不同的角度用向量表示( 单位为弧度) th=linspace(0,2*pi,13)。射线簇的终点的直角坐标为: [x,y]=pol2cart(th,r0)。插入x 的起始坐标x=[x; *x].同样插入y 的起始坐标, y=[y; *y], x 和y 都是二维数组, 每一列是一条射线的起始和终止坐标。用二维画线命令plot(x,y)就画出所有电力线。 平面等势线的画法 在过电荷的截面上, 等势线就是以电荷为中心的圆簇, 用MATLAB 画等势 线更加简单。静电力常量为k=9e9, 电量可取为q=1e- 9; 最大的等势线的半径应该比射线的半径小一点 r0=。其电势为u0=k8q /r0。如果从外到里取7 条等势线, 最里面的等势线的电势是最外面的3 倍, 那么各条线的电势用向量表示为: u=linspace(1,3,7)*u0。从- r0 到r0 取偶数个点, 例如100 个点, 使最中心点的坐标绕过0, 各点的坐标可用向量表示: x=linspace(- r0,r0,100), 在直角坐标系中可形成网格坐标: [X,Y]=meshgrid(x)。各点到原点的距离为: r=sqrt(X.^2+Y.^2), 在乘方时, 乘方号前面要加点, 表示对变量中的元素进行乘方计算。各点的电势为U=k8q. /r, 在进行除法运算时, 除号前面也要加点, 同样表示对变量中的元素进行除法运算。用等高线命令即可画出等势线 contour(X,Y,U,u), 在画等势线后一般会把电力线擦除, 在画等势线之前插入如下命令hold on 就行了。平面电力线和等势线如图1, 其中插入了标题等等。越靠近点电荷的中心, 电势越高, 电场强度越大, 电力线和等势线也越密。

相关文档
最新文档