计算机图形学第三章---用户接口与交互式技术用户接口设计

本文详细介绍了OpenGL中的用户接口设计,强调了一致性原则和减少用户记忆量的重要性。讲解了拾取设备、交互式绘图技术如橡皮筋技术和拾取操作,并通过实例展示了如何实现这些功能。涉及OpenGL的函数如glSelectBuffer、glRenderMode、glutMouseFunc等,以及如何处理鼠标和键盘事件。
摘要由CSDN通过智能技术生成

 第三章  用户接口与交互式技术用户接口设计

3.1 用户接口设计
一个好的图形用户接口应具备以下特点:
易于被用户理解并接受;
易于操作、使用;
高效率、可靠性和实用性。

 

一致性原则:
一致性原则是指在设计系统的各个环节时,应遵从统一和简单的规则,保证不出现例外和特殊的情况,无论信息显示还是命令输入都应如此。
按用户认为最正常、最合乎逻辑的方式去做,这比保持单纯的一致性更重要。

 

减少记忆量:
用户接口的操作应该组织得容易理解和记忆。
重要的原则是唤醒用户的识别而不是记忆。

 

逻辑输入设备——拾取设备
拾取设备:拾取设备用于选择场景中即将进行变换、编辑和处理的部分。

 

3.2略
3.3 交互式绘图技术

基本交互绘图技术:
回显  约束  网格  引力域  橡皮筋技术  草拟技术  拖动  旋转  形变 


三维交互技术:
三维图形数据的输入
三维定位
三维定向


3.4 OpenGL实现橡皮筋技术
橡皮筋技术的实现方法:
利用颜色的异或操作,对原有图形并不是擦除,而是再绘制一条同样的直线段并与原图形进行异或操作,此时原图形会从屏幕上消失;
利用双缓存技术,绘制图形时分别绘制到两个缓存,交替显示。

鼠标实现
鼠标响应函数
     glutMouseFunc
鼠标移动相应函数
     glutMotionFunc
     glutPassiveMotionFunc


键盘实现
键盘相应函数
    glutKeyboardFunc

 

3.5 OpenGL实现拾取操作
设置拾取缓冲区
        void glSelectBuffer(GLsizei n, GLunint *buff);
进入选择模式
        GLint glRenderMode(GLenum mode);


名字堆栈操作
初始化名字堆栈(glInitNames)
将一个名字压入堆栈(glPushName)
替换名字堆栈的栈顶元素(glLoadName)
将栈顶元素弹出(glPopName)

设置合适的变换过程
        gluPickMatrix(xPick, yPick, widthPick, heightPick, *vp);
为每个图元分配名字并绘制
切换回渲染模式
分析选择缓冲区中的数据

 

3.6 OpenGL中的菜单功能
菜单注册函数
        glutCreateMenu(ProcessMenu);
在菜单中加入菜单项
         void glutAddMenuEntry(char *name, GLint value);
将菜单与某个鼠标按键关联
         void glutAttachMenu(button);

 


#include <gl/glut.h>

int iPointNum = 0;                     //已确定点的数目
int x1=0,x2=0,y1=0,y2=0;               //确定的点坐标
int winWidth = 400, winHeight = 300;     //窗口的宽度和高度

void Initial(void)
{
 glClearColor(1.0f, 1.0f, 1.0f, 1.0f);        
}

void ChangeSize(int w, int h)
{
 winWidth = w; winHeight = h;
 glV

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值