1 Input and Interaction. 2 Input Devices Physical input devices Keyboard devices and pointing...

Post on 13-Jan-2016

250 views 5 download

Transcript of 1 Input and Interaction. 2 Input Devices Physical input devices Keyboard devices and pointing...

1

Input and Interaction

2

Input Devices Physical input devices

Keyboard devices and pointing devices Logical input devices

3

Pointing Devices – 1/2 Mouse

Mechanical versus optical Trackball Trackpoint

(Pressure-sensitive) Data tablet

4

Pointing Devices – 2/2 Lightpen

Light-sensing device

Joystick Two velocities Variable-sentivity device Haptic device

Spaceball Six degrees of freedom

Data gloves

5

Positioning

Relative Mouse, trackball, trackpoint

Absolute Data tablet

6

Logical Input Devices – 1/2 Characteristics

The measurements returned to the programs The time these measurements returned

Six classes

7

Logical Input Devices – 2/2 String: by keyboard Locator: by mouse or trackball Pick: id of the selected object is returned Choice: select one of a distinct number of options,

e.g. menus Dial or valuators: e.g. slidebars Stroke: returns an array of locations: multiple use

s of a locator, could be implemented by a “mouse dragging”

8

Clients and Servers Servers: provide

services Print servers,

file servers, graphics servers…

Clients: users and user programs that make use of these services OpenGL application

programs

9

Programming Event-Driven Input Using the pointing device

Move event Mouse is moved and one of the button pressed

Passive move event Mouse is moved and no buttons are pressed

Mouse event: one of mouse buttons is pressed or released glutMouseFunc(mouse): register the function void mouse(int button, int state, int x, int y)

10

Other Events and CallBacks Reshape event: whenever the window is resized

glutReshapeFunc(myReshape); Motion event:

glutMotionFunc(drawSquare); Keyboard event:

glutKeyboardFunc(keyboard);void keyboard(unsigned char key, int x, int y){

if(key==‘q’ || key == ‘Q’) exit();}

11

Display and Idle CallBacks glutDisplay(display); Idle callback: is invoked when there is no o

ther events Callback could be changed at any time or d

isabled by set to NULL

12

A Program Example: Drawing Squares with Mouse?

13

A Program Example: Drawing Squares with Mouse

Demo

14

A Simple Paint Program – 1/4 Draw geometric primitives: line segments,

polygons Manipulate pixels Control attributes of primitives Include menus Should behave correctly when moved or

resized

15

A Simple Paint Program – 2/4

Initial display of paint program Menu structure of paint program

16

A Simple Paint Program – 3/4 Five drawing modes: line segment,

rectangle, triangle, pixel, and text Two (or three) clicks determine the

locations of the end points of line segments, rectangles…

Choose colors, pixel size, fill patterns…

17

A Simple Paint Program – 4/4

Demo

18

Animating Interacitve Programs A Rotating Square – 1/4

x=cosy=sin

(cos, sin ), (-sin, cos), (-cos, -sin), (sin, -cos) lie on the unit circle

19

A Rotating Square 2/2Demo

20

Double Buffering How to avoid flickering?

21

Design of Interactive Programs A smooth display with no flickering A variety of interactive devices A variety of methods for entering and displaying

information An easy-to-use interface Feedback to the user Tolerance for user error Consider human factors

22

Rubberbanding

Demo

23

Logic Operation Copy or replacement mode There are 16 possible operations between 2 bits Source pixel and destination pixel d=ds, where means XOR (exclusive or)

d=(ds) s, which means drawing something twice will erase it

OpenGL support all 16 logic modes, GL_COPY is the default

glEnable(GL_COLOR_LOGIC_OP);glLogicOP(GL_XOR); /* change it to XOR mode */

24

Summary and Notes Input devices Event mode and callbacks Sample interaction code Double buffering XOR and Rubberbanding