throbber
puter Graphics
`
`PRINCIPLES AND PRACTICE
`Foley • van Dam • Feiner • Hughes
`SECOND EDITION in C
`
`THE SYSTEMS PROGRAMMING SERIES
`
`EX-1021
`Microsoft Inc. v. LiTL LLC
`
`

`

`THE
`SYSTEMS
`PROGRAMMING
`SERIES
`
`Computer
`Graphics:
`Principles and
`Practice
`SECOND EDITION in C
`
`Foley • \lan Dam • Feiner • l-Iughes
`
`,
`
`

`

`SECOND EDITION IN C
`
`Computer Graphics
`
`PRINCIPLES AND PRACTICE
`
`James D. Foley
`Georgia Institute of Technology
`
`Andries van Dam
`Brown University
`
`Steven K. Feiner
`Columbia University
`
`John F. Hughes
`Brown University
`
`..,..,
`
`ADDISON-WESLEY PUBLISHING COMPANY
`Reading, Massachusetts • Menlo Park, California • New York
`Don MiUs, Ontario • Wokingharn, England • Amsterdam • Bonn
`Sydney • Singapore • Tok)Q • Madrid • San Juan • Milan • Paris
`
`

`

`Sponsoring Editor: Peter S. Gordon
`Production Supervisor: Bette J. Aaronson
`Production Supervisor for the C edition: Juliet Silveri
`Copy Editor: Lyn Dupre
`Text Designer: Herb Caswell
`Technical Art Consultant: Joseph K. Vetere
`Illustrators: C&C Associates
`Cover Designer: Marshall Henrichs
`Manufacturing Manager: Roy Logan
`
`This book is in the Addison-Wesley Systems Programming Series
`Consulting editors: IBM Editorial Board
`
`Library of Congress Cataloging-in-Publication Data
`
`Computer graphics: principles and practice I James D. Foley . . . [ et
`a!.]. -
`2nd ed. in C.
`p.
`em.
`Includes bibliographical references and index.
`ISBN 0-201-84840-6
`1. Computer graphics.
`T385.C5735 1996
`006.6'6-dc20
`
`I. Foley, James D. , 1942-
`
`Reprinted with corrections, July 1997.
`
`95-13631
`CIP
`
`Cover: " Dutch Interior," after Vermeer, by J. Wallace, M. Cohen, and D. Greenberg, Cornell University
`(Copyright © 1987 Cornell University , Program of Computer Graphics .)
`
`Many qf the designations used by manufacturers and sellers to distinguish their products are claimed as
`trademarks . Where those designations appear in this book, and Addison-Wesley was aware of a trademark
`claim, the designations have been printed in initial caps or all caps.
`
`The programs and applications presented in this book have been included for their instructional value. They are
`not guaranteed for any particular purpose. The publisher and the author do not offer any warranties or
`representations, nor do they accept any liabilities with respect to the programs or applications .
`
`Reprinted with corrections November 1992, November 1993, and July 1995.
`
`Copyright© 1996, 1990 by Addison-Wesley Publishing Company , Inc.
`
`All rights reserved . No part of this publication may be reproduced, stored in a retrieval system, or transmitted,
`in any form or by any means , electronic, mechanical, photocopying, recording, or otherwise, without the prior
`written permission of the publisher. Printed in the United States of America.
`
`6 7 8 9 10-DOC-99 98 97
`
`

`

`
`
`Introduction
`
`ith th
`Computer graphics started with the display of data on hardcopy plotters and cathode ray
`erlb in
`n
`tube (CRT) screens soon after the introduction of computers themselves. It has grown to
`include the creation, storage, and manipulation of models and images of objects, These
`models come from a diverse and expanding set of fields, and include physical, mathemati-
`= engineering, architectural, and even conceptual (abstract) structures, natural phenome-
`. and so on. Computer graphics today is largely interactive: The user controls the
`at structure, and appearance ofobjects and oftheir displayed images by using input
`devices, such as a keyboard, mouse, or touch-sensitive panel on the screen. Because of the
`close relationship between the input devices and the display, the handling of such devices is
`included in the study of computer graphics.
`Until the early 1980s, computer graphics was a small, specialized field, largely because
`the hardware was expensive and graphics-based application programs that were easy to use
`and cost-effective were few. Then, personal computers with built-in raster graphics
`displays—such as the Xerox Star and,later, the mass-produced, even less expensive Apple
`Macintosh and the IBM PC and its clones—popularized the use of bitmap graphics for
`user-computer interaction. A bitmap is a ones and zeros representation of the rectangular
`array of points (pixels or pels, short for ‘picture elements’’) on the screen. Once bitmap
`graphics became affordable, an explosion of easy-to-use and inexpensive graphics-based
`applications soon followed. Graphics-baseduser interfaces allowed millions of new users to
`control simple, low-cost application programs, such as spreadsheets, word processors, and
`drawing programs.
`The concept of a ‘‘desktop"’’ now became a popular metaphor for organizing screen
`space. By means of a window manager,
`the user could create, position, and resize
`
`,
`
`1
`
`

`

`2
`
`Introduction
`
`rectangular screen areas , cal led windows, that acted as virtual graphics terminals, each
`running an application. This allowed users to switch among multiple activities just by
`pointing at the desired window, typically with the mouse. Like pieces of paper on a messy
`desk, windows could overlap arbitrarily. Also part of this desktop metaphor were displays
`of icons that represented not just data files and application programs, but also common
`office objects, such as file cabinets, mailboxes, printers, and trasbcans, that performed the
`computer-operation equivalents of their real-life counterparts. Direct manipultJtion of
`objects via "pointing and clicking" replaced much of the typing of the arcane commands
`used in earlier operating systems and computer applications. Thus, users could select icons
`to activate the corresponding programs or objects, or select buttons on pull-down or pop-up
`screen menus to make choices. Today, almost all interactive application programs, even
`those for manipulating text (e.g., word processors) or numerical data (e.g., spreadsheet
`programs), use graphics extensively in the user interface and for visualizing and
`manipulating the application-specific objects. Graphical interaction via raster displays
`(displays using bitmaps) has replaced most textual interaction with alphanumeric terminals.
`Even people who do not use computers in their daily work encounter computer
`graphics in television commercials and as cinematic special effects. Computer graphics is
`no longer a rarity. It is an integral part of all computer user interfaces, and is indispensable
`for visualizing two-dimensional (20) , three-dimensional (30), and higher-dimensional
`objects: Areas as diverse as education, science, engineering, medicine, commerce, the
`military , advertising, and entertainment all rely on computer graphics. Learning how to
`program and use computers now includes learning how to use simple 20 graphics as a
`matter of routine.
`
`1.1
`
`IMAGE PROCESSING AS PICTURE ANALYSIS
`
`Computer graphics concerns the pictorial synthesis of real or imaginary objects from their
`computer-based models , whereas the related field of ifllllge processing (also called picture
`processing) treats the converse process: the analysis of scenes, or the reconstruction of
`models of 20 or 30 objects from their pictures. Picture analysis is important in many
`arenas: aerial surveillance photographs, slow-scan television images of the moon or of
`planets gathered from space probes, television images taken from an industrial robot's
`"eye," chromosome scans, X-ray images, computerized axial tomography (CAT) scans,
`and fingerprint analysis all exploit image-processing technology (see Color Plate 1.1).
`Image processing has the subareas image enhancement, pa11ern detection and recognitiofl,
`and scene analysis and compwer vision. Image enhancement deals with improving image
`quality by eliminating noise (extraneous or missing pixel data) or by enhancing contrast.
`Pattern detection and recognition deal with detecting and clarifying standard patterns and
`finding deviations (distortions) from these patterns. A particularly important example is
`optical character recognition (OCR) technology, which allows for the economical bulk
`input of pages of typeset, typewritten, or even handprinted characters. Scene analysis and
`computer vision allow scientists to recognize and reconstruct a 30 model of a scene from
`several 20 images. An example is an industri.al robot sensing the relative sizes, shapes,
`positions, and colors of parts on a conveyor belt.
`
`

`

`
`
`11.3
`1.3
`
`Representative Uses of Computer Graphics
`
`5
`
`enormous and is growing rapidly as computers with graphics capabilities become
`commodity products. Let's look at a representative sample of these areas.
`•

`User interfaces. As we mentioned, most applications that run on personal computers
`and workstations, and even those that run on terminals attached to time-shared computers
`and network compute servers, have user interfaces that rely on desktop window systems to
`manage multiple simultaneous activities, and on point-and-click facilities to allowusers to
`select menu items, icons, and objects on the screen; typing is necessary only to input text to
`be stored and manipulated. Word-processing, spreadsheet, and desktop-publishing pro-
`grams are typical applications that take advantage of such user-interface techniques. The
`authors of this book used such programs to create both the text and the figures; then, the
`publisher and their contractors produced the book using similar typesetting and drawing
`software.
`=
`(Interactive) plotting in business, science, and technology. The next most common use
`of graphics today is probably to create 2D and 3D graphs of mathematical, physical, and
`economic functions; histograms, bar and pie charts; task-scheduling charts; inventory and
`production charts; and the like. All these are used to present meaningfully and concisely the
`trends and patterns gleaned from data, so as to clarify complex phenomena and to facilitate
`informed decision making.
`*
`Office automation and electronic publishing. The use of graphics for the creation and
`dissemination of information has increased enormously since the advent of desktop
`publishing on personal computers, Many organizations whose publications used to be
`printed by outside specialists can now produce printed materials inhouse. Office automa-
`tion and electronic publishing can produce both traditional printed (hardcopy) documents
`and electronic (softcopy) documents that contain text, tables, graphs, and other forms of
`drawn or scanned-in graphics. Hypermedia systems that allow browsing of networks of
`interlinked multimedia documents are proliferating (see Color Plate I.2).
`interactive
`*
`Computer-aided drafting and design. In computer-aided design (CAD),
`graphics is used to design components and systems of mechanical, electrical, electrome-
`chanical, and electronic devices, including structures such as buildings, automobile bodies,
`airplane and ship hulls, very large-scale-integrated (VLSI) chips, optical systems, and
`telephone and computer networks. Sometimes, the user merely wants to produce the precise
`drawings of components and assemblies, as for online drafting or architectural blueprints.
`Color Plate 1.8 shows an example of such a 3D design program, intended for nonprofession-
`als; a *‘customize your own patio deck"’ program used in lumber yards. More frequently,
`however, the emphasis is on interacting with a computer-based model of the component or
`system being designed in order to test, for example, its structural, electrical, or thermal
`properties. Often, the model is interpreted by a simulator that feeds back the behavior of the
`system to the user for further interactive design and test cycles. After objects have been
`designed, utility programs can postprocess the design database to make parts lists,
`to
`process ‘‘bills of materials,’* to define numerical control tapes for cutting or drilling parts,
`and so on.
`
`Simulation and animation for scientific visualization and entertainment. Computer-
`*
`produced animated movies and displays of the time-varying behavior of real and simulated
`
`

`

`1Develapment of Harr,dw re and Software fo:r Computer ·Graphics
`
`15
`
`t b iques pe il'y g d tio
`:in · ·1en ·ty of n. ighboring
`or coLr nns. Th
`1 at edges ,of prim'tives, rathe than setting pi e.ls to maxim mo zero intensity nly;
`, 14, and 19 fl r fun:h . r di cu
`of tlf important topi, .
`Chap r,
`
`Input Technology
`1.5 2
`[nput technulo :y h.a , ;al , improved ready over th year • Th, du
`, fTagi le lj h · pen of
`evel ;ped by office-
`voo1or y tern ha bee:
`repla d by th ·. ubiguJt u n
`.
`ut mation pi ne
`. · d m hm 1, and the
`· · ·
`· rnbart in the mid~ i.xd
`[ENGE68JI),

`t devices that
`transparent. · · ·
`mo n.ted n the , · .. , en
`·upply n t ·
`he - ·reen, but al o 30 a
`aJ in.p t.

`, boo m·ng m
`. ·· udio
`. ·m
`u~ . ( egre
`o mm nrca:tfon also ha.... ex ili pot· ntiaJ, ~nee i:t allows hands-free input nd natuiram
`, fi .. ·
`outp ·
`im · • uuc1;· o
`and o on. With ·
`tandard inpu cf vio • th
`pj
`-'-
`· .
`' ~. in:g new in.fbrmaf on or
`by typin
`user • _ · · i
`ation

`b pointing ro
`·. · in:formarion
`screen. These ino
`tio, require n !knowledg
`o · progr · · ·,
`y a little keyboard use·: ·

`imply by electing
`- nu butt
`·. . -

`few driara te. - 1in
`by 'h
`·. 1. n !
`rm p~
`-a ing conse utive
`~ · ra\VS · .
`, . -
`12 ve • paints by
`lirl or
`, · lated b "moorh
`p in
`. bmm eel by potyg, n or p~t'nt
`moving the c
`and fill
`ar
`,ntoun with
`
`.
`
`·. r lhe
`. of _ ~
`
`o
`

`

`

`
`· · · · c ·
`11h

`

`
`1.5.3 Software Portab~llcy· and Graphics Standards
`· teady adv.me

`· . dware te hnol y ave thus made
`Je the evo ut · on
`from
`displ ry:
`a-kind p
`iall · u put
`•
`· .
`' , · h moo, in ·. ·
`mputer.
`. l 'W'Onder hether
`•
`· if · · aim
`.· .
`· ·
`d ex.pen
`· u tie
`extent have
`resolved?' · .·
`y rem · and ·
`aihi -

`ft ·
`· ·. it
`primitive grap
`- d
`th
`has been

`prooess o mat
`· n uch ·. oft.ware. ~
`.
`·.
`l!JlppJied by rnanu acwrers for their particular di
`.
`o • · ·
`.
`pend m
`d ive a
`i p
`p
`pJ
`pri.nre · .
`m re
`an h~.,
`-tj
`. ing a devic.e-i dependent packag in c-0 ~u
`· w·th a higb-l :vet
`pur
`o
`prom · , appliootion~progrom pona · · '· . • Thi · portabiWity i ·
`programm · n.g
`u

`way . · a high-leve.1 1 m hine-inde1
`pl"(} · · 100 in m
`nt l nguag ( u h
`'l
`t' ng di programmer from mosll:
`FORTRAN
`' -
`· or C) provid portability: b

`machine ' -
`a d ·p
`·· · "i, I n · ua ·
`readily amp 'emented n
`I ro d
`fe
`-r portabmly' ' i
`rag
`f p -
`• 'Pti gJ
`nhooc d in th:at pro ra,nm · can
`n ro • , taUabo ,, nd fir d fanuliar
`· en to yst 01 ,or even rorr ins .
`now m ve ,
`oft-ware.
`f th ne d for
`in uch d vice-independent g · phic
`tandard
`A general awarene .
`- - i cation for a D
`rrties and culminat d in a
`packages aw s
`re
`in the mid-
`
`y
`v
`
`

`

`166
`
`Graphics Hardware
`
`graphics processor with a separate pixmap is introduced, and a wide range of graphics(cid:173)
`processor functionalities is discussed in Section 4.3.3. Section 4.3.4 discusses ways in
`which the pixmap can be integrated back into the CPU's address space, given the existence
`of a graphics processor.
`
`4 .3.1 Simple Raster Display System
`
`The simplest and most common raster display system organjzation is shown in Fig. 4.18.
`The relation between memory and the CPU is exactly the same as in a nongraphics
`computer system. However, a portion of the memory also serves as the pixmap. The video
`controller displays the image defined in the frame buffer, accessing the memory through a
`separate access port as often as the raster-scan rate dictates. In many systems, a fixed
`portion of memory is permanently allocated to the frame buffer, whereas some systems
`have several interchangeable memory areas (sometimes called pages in the personal(cid:173)
`computer world). Yet other systems can designate (via a register) any part of memory for the
`frame buffer. In this case, the system may be organized as shown in Fig. 4.19, or the entire
`system memory may be dual-ported.
`The application program and graphics subroutine package share the system memory
`and are executed by the CPU. The graphics package includes scan-conversion procedures,
`so that when the application progrdm calls, say, SRGP_IineCoord (xl , yl , x2, y2), the
`graphics package can set the appropriate pixels in the frame buffer (details on scan(cid:173)
`conversion procedures were given in Chapter 3). Because the frame buffer is in the address
`space of the CPU, the graphics package can easily access it to set pixels and to implement
`the Pix Bit instructions described in Chapter 2.
`The video controller cyc.les through the frdme buffer, one scan line at a time, typically
`60 times per second. Memory reference addresses are generated in synchrony with the
`raster scan, and the contents of the memory are used to control the CRT beam's intensity or
`
`CPU
`
`Peripheral
`devices
`/\
`
`<
`
`~
`
`I DUI
`
`>
`
`System
`memory
`
`Frame
`buffer
`
`Video
`controller
`
`8
`---
`
`Fig. 4. 18 A common raster display system architecture. A dedicated portion of the
`system memory is dual-ported. so that it can be accessed directly by the video
`controller, without the system bus being tied up.
`
`

`

`4.3
`
`Raster-sca n Display Systems
`
`167
`
`CPU
`
`(
`
`Peripheral
`devices
`A
`
`......
`
`System
`memory
`
`Video
`controller
`
`Monitor
`
`Fig. 4 .19 A s imple raster display system architecture. Because the frame buffer may
`be stored anyw here in system memory, the video controller accesses the memory via
`the system bus.
`
`color. The video controller is organized as shown in Fig. 4.20. The raster-scan generator
`produces deflection signals that generate the raster scan; it also controls the X and Y address
`registers, which in turn define the memory location to be accessed next.
`Assume that the frame buffer is addressed in x from 0 to x,.. and in y from 0 to y.,.,.;
`then, ai the start of a refresh cycle, the X address register is set to zero and the Y register is
`set to Ymu (the top scan line). As the first scan line is generated, the X address is
`incremented up through x...,.. Each pixel value is fetched and is used to control the intensity
`of the CRT beam. After the first scan line, the X address is reset to zero and the Y address is
`decremented by one. The process continues until the last scan line (y = 0) is generated .
`
`....
`
`....- X llddl II
`
`~ Set or increment
`
`M
`
`u.. ~
`• ~
`llddt u ~
`
`m
`
`0
`
`r ,
`
`'1'._
`
`........ ~
`
`RM.I'«<It
`
`Horizontal
`and vertical
`deflection
`signals
`
`L-
`,....
`
`r--
`I.- Y addlcu
`
`~ Set or decrement
`
`Data
`
`-.
`
`Pial
`'illlue(l)
`
`Intensity
`or color
`
`Fig. 4 .20 logical organization of the video controller.
`
`

`

`3.50
`
`lrnpld Devices. Techn,:que -. and Interaction Tasks
`
`th
`m
`
`· .mi ht compare interacti.on techniqu - u ing differelll d . ·ces
`I.
`t k. Thus we might a ·m1 th.a experienced users Ml o .' n nter 1comrnand
`am
`or .a key
`ard 1than via m _ nu
`I • lion
`that u rs can pi
`· - · · via runcti -o
`y us'ng a. mou
`~1ec,ts m re q
`than th -y can usm a joysti.ok or -u or
`

`
`l
`
`· ·
`

`

`
`· I
`
`.
`
`· ·
`,. · . . ·.
`
`. ui
`_
`p .rt
`· y with . no
`1n
`noecting d ioe to _ mpu,te
`; b
`_
`.
`ronou R - ·. · 2 termma1 int rface gen -rally m kin
`
`,
`
`· . also
`• ·
`
`nunon
`in , rf iDg
`
`'ntera u n ·
`l, we con jder
`d I ,gue l
`·u t indi · --
`talce f m :
`· n _
`h task . Hand m · • ,-
`an with ursor-cont ,
`-rall fast r with
`·, .are ahiead
`r th n m u e i
`- ·trol
`m
`m n ed to be on the .keyboard
`t t k in equ n after th 01Jrsor
`· .
`r ·
`pier 9. h re ·we d'eru with coo t
`_ . e
`i ail
`d · cus.~
`_

`w _r i· .e.
`· nfusion ,can
`uildiog b~ock intmduood ·n
`p
`, voided
`'
`·. d
`··

`eep
`·n mmd.
`l

`I vel d.
`are th · elev· e
`.
`lp
`0
`. . and ·
`d
`ma·nt in bi ·
`· ,e
`Al
`
`a.·1.1 Locator Devi.ices
`h i u ful, 1to 1 - :j
`b Jute
`r
`
`-r d vi
`

`
`t
`
`.
`
`. "nd _pend nt har -:teri ·jc :
`· u . u~ .
`referen e· r
`av - a [ ·
`su h mi •
`, a ongm. . . ·,w d-:Vi
`· . respec
`·. d jn
`·gm and :repo ,t nly _h;mges
`a
`tm1 jo
`ic
`· .
`tra kballs and
`b
`· _
`ao aribitradly large
`from th -ir former po i-i.on. A re ati
`change in positi n: A u er ,can move am use al g th_
`up, an pla
`· it back
`p Ii
`. it & ain. A data tab) t can be piogrammed t behave

`· · '
`· m ·•tar; m
`·, · . po ·tion read -· · · · · • ·
`a
`U'a ted from au
`O 11dinates
`'
`, ·
`i
`iti n. Thi ,
`t yi Id _ .
`.
`ded to the ,
`m an · ,
`·process is con inued until
`gain
`· · •
`· ·
`.
`Relative dev·ces can -
`.
`-
`i : ·
`d a i .
`· · ·
`can b . _
`of a. rel
`th~ p ·
`on th - .c11 en .
`repOSiition the u.rsor an
`light pen . r t u h
`. ith a direct device
`reen--th _ _ · po,i nt directly a
`as
`urrogate fing r~ with an indir,e _ t d .· ·
`uch as a abt ,
`reen with a fin
`·-re n.
`oton th

`urs r n .
`menu im _ ad.
`mu t be learned for th- latter;, the pr ' "feraf
`do · an en ironm nt in whth ·
`h · -
`an . d ·
`. However. d' re t pointing can
`a users.
`
`c
`
`e,,.
`
`rea ab olu -,
`pro_ ram can
`

`
`'
`
`the
`
`comput
`casu ·
`arm fat
`
`, r use
`. e pe i
`
`

`

`8.2
`
`Basic Interaction Task.s
`
`365
`
`shift - i
`to move
`selection up
`using keyboard
`
`shift - J.
`to move selection
`down using
`keyboard
`
`font
`get
`Insert
`
`morg1n
`print
`put
`repeot
`
`T to scroll window
`up using keyboard
`
`J. to scroll window
`down using keyboard
`
`Fig. 8 .8 A menu within a scrolling window. The user controls scrolling by selecting the
`up and dow n arrows or by dragging the square in the scroll bar.
`
`to be paged or scrolled through. A scroll bar of the type used in many window managers
`allows all the relevant scrolling and paging commands to be presented in a concise way. A
`'fast keyboard-oriented alternative to pointing at the scrolling commands can also be
`provided; for instance, the arrow keys can be used to scroll the window, and the shift k.ey
`can be combined with the arrow keys to move the selection within the visible window, as
`shown in Fig. 8.8. In the limit, the si.ze of the window can be reduced to a single menu
`item, yielding a "slot-machine" menu of the type shown in Fig. 8.9.
`With a hierarchical menu, the user first selects from the choice set at the top of the
`hierarchy, which causes a second choice set to be available. The process is repeated until a
`leaf node (i.e., ao element of the choice set itseJO of the hierarchy tree is selected. As with
`hierarchical object selection, navigation mechanisms need to be provided so that the user
`can go back up the hierarchy if an incorrect subtree was selected. Visual feedback. to give
`the user some sense of place within the hierarchy is also needed.
`Menu hierarchies can be presented in several ways. Of course, successive levels of the
`hierarchy can replace one another on the display as further choices are made, but this does
`not give the user much sense of position within the hierarchy. The cascadi11g hierarchy, as
`depicted in Fig. 8.10, is more attractive. Enough of each menu must be revealed that the
`complete highlighted selection path is visible, and some means must be used to indicate
`whether a menu item is a leaf node or is the name of a lower-level menu (in the figure, the
`right-pointing arrow fills this role). Another arrangement is to show just the name of each
`
`Current Menu Item g
`( Accep t) (Cancer)
`
`Fig. 8 .9 A small menu-selection w indow . Only one menu item appears at a time. The
`scroll arrow s are used to change the current menu item, which is selected when the
`Accept button is chosen.
`
`

`

`366
`
`Input Devices. Techniques. and Interaction Tasks
`
`(a)
`
`(b)
`
`(C)
`
`Fig. 8 .1 0 A pop-up hierarchical menu. (a) The first menu appears where the cursor is,
`in response to a button-down action. The cursor can be moved up and down to select
`the desired typeface. (b) The cursor Is then moved to the right to bring up the second
`menu. (c) The process is repeated for the third menu.
`
`selection made thus far in traversing down the hierarchy, plus all the selections available at
`the current level.
`A panel hierarchy is another way to depict a hierarchy, as shown in Fig. 8. 11 ; it takes
`up somewhat more room than the cascading hierarchy. lf the hierarchy is not too large, an
`explicit tree showing the entire hierarchy can also be displayed.
`When we design a hierarchical menu, the issue of depth versus breadth is always
`present. Snowberry et al. [SNOW83) found experimentally that selection time and accuracy
`improve when broader menus with fewer levels of selection are used. Similar results are
`reported by Landauer and Nachbar ILAND85) and by other researehers. However, these
`
`Fig. 8 .11 A hierarchical-selection menu. The leftmost column represents the top level;
`the children of the selected item in this column are shown in the next column; and so on.
`If there is no selected Item, then the columns to the right are blank. (Courtesy of NeXT.
`Inc.@ 1989 NeXT, Inc.)
`
`

`

`368
`
`Input Devices, Techniques, and Interaction Tasks
`
`maintaining visual continuity. An attractive feature in pop-up menus is to highlight initially
`the most recently made selection from the choice set if the most recently selected item is
`more likely to be selected a second time than is another item, positioning the menu so the
`cursor is on that item. Alternatively, if the menu is ordered by frequency of use, the most
`frequently used command can be highlighted initially and should also be in the middle (not
`at the top) of the menu, to minimize cursor movements in selecting other items.
`Pop-up and other appearing menus conserve precious screen space-one of the
`user-interface designer's most valuable commodities. Their use is facilitated by a fast
`RasterOp instruction , as discussed in Chapters 2 and 19.
`Pop-up menus often can be context-sensitive. In several window-manager systems, if
`the cursor is in the window banner (the top heading of the window) , commands involving
`window manipulation appear in tbe menu; if the cursor is in the window proper, commands
`concerning the application itself appear (which commands appear can depend on the type of
`object under the cursor); otherwise, commands for creating new windows appear in the
`menu. This context-sensitivity may initially be confusing to the novice, but is powerful once
`understood.
`Unlike pop-up menus, pull-down and pull-out menus are anchored in a menu bar along
`an edge of the screen. The Apple Macintosh, Microsoft Windows , and Microsoft
`Presentation Manager all use pull-down menus. Macintosh menus , shown in Fig 8.13, also
`illustrate accelerator keys and context sensitivity. Pull-out menus , an alternative to
`pull-down menus, are shown in Fig. 8.14. Both types of menus have a two-level hierarchy:
`The menu bar is the first level, and the pull-down or pull-out menu is the second. Pull-down
`and pull-out menus can be activated explicitly or implicitly. Ln explicit activation, a button
`depression, once the cursor is in the menu bar, makes the second-level menu appear; the
`
`Cut
`Copy
`Paste
`Ctear
`
`Duplicate
`Select All
`
`..............
`
`. .. ...... .. .. ..
`eursoi
`
`··············
`
`• • • '
`
`0 . . . . . . . . . .
`
`Release ;
`b11ttn.-
`
`Fig. 8 . 13 A Macintosh pull-down menu. The last menu item is gray rather than black,
`indicating that it is currently not available for selection (the currently selected object, an
`arc, does not have corners to be rounded). The Undo command is also gray, because
`the previously executed command cannot be undone. Abbreviations are accelerator
`keys for power users. (Copyright 1988 Claris Corporation. All rights reserved.)
`
`

`

`II ut D_
`
`s. _ndl ilnte ~c
`
`1i
`
`p k ng po'nts ,on th
`
`8.3.3
`
`ID n---'m'ic Mani
`
`· . In man
`
`itu , · ,ns th u mu: t he
`
`[ci]
`~
`
`mbol ·mo n ~ - · po · ·on.
`
`

`

`s:.3
`
`Co p
`
`ffik::ta11kQl8 i
`
`a
`
`d
`moliing
`with
`wn
`
`-0
`s
`ssible
`
`-Cil
`
`tions
`
`F 1. ,8 41 Dynamjc 1rottnon.
`
`,
`,n --
`th r UD'i
`-
`
`D
`
`F· g. 1 .42 H_ ndl
`
`bj _c
`
`•
`
`

`

`9
`Dialogue
`Design
`
`We have described the fundamental building blocks from which the interface to an
`interactive graphics system is crafted-interaction devices, techniques, and tasks. Let us
`now consider how to assemble these building blocks into a usable and pleasing form.
`User-inrerface design is still at least partly an art, not a science, and thus some of what we
`offer is an attitude toward the design of interactive systems, and some specific dos and
`don'ts that, if applied creatively, can help to focus attention on the lmm(m fac/Ors, also
`called the ergonomics, of an interactive system.
`The key goals in user-interface design are increase in speed of learning, and in speed of
`use, reduction of error rate, encouragement of rapid recall of how to use the interface, and
`increase in attractiveness to potential users and buyers.
`Speed of learning concerns how long a new user takes to achieve a given proficiency
`with a system. It is especially important for systems that are to be used infrequenlly by any
`one individual: Users are generally unwilling to spend hours learning a system that they will
`usc for just minutes a week!
`Speed of use concerns how long an experienced user requires to perform some specific
`task with a system. It is critical when a person is to use a system repeatedly for a significant
`amount of time.
`The error rare measures the number of user errors per interaction. The error rate affects
`both speed of learning and speed of use; if it is easy to make mistakes with the system,
`learning takes longer and speed of use is reduced because the user must correct any
`mistakes. However, error rate must be a separate design objective for applications in which
`even one error is unacceptable-for example, air-traffic control, nuclear-power-plant
`
`391
`
`

`

`392
`
`Dialogue Design
`
`control. and strategic military command and coniJOI systems. Such systems often trade off
`some speed of use for a lower error rate.
`Rapid recall of how to use the system is another distinct design objective, since a user
`may be aw.ty from a system for weeks, and then return for casual or intensive use. The
`system should "come back" quickly to the user.
`A11ractiveness of the interface is a real marketplace concern. Of course, liking a syst.em
`or a feature is not necessarily the same as being facile with it. Ln numerous experiments
`comparing two alternative designs, subjects state a strong preference for one design but
`indeed perform faster with the other.
`It is sometimes said that systems cannot be both easy to learn and fast to use. Although
`there was certainly a time when this was often true. we have learned how to satisfy multiple
`design objectives. The simplest and most common approach to combining speed of use and
`case of learning is to provide a "starter kit" of basic commands that are designed for the
`beginning user, but are on ly a subset of the overall command set. This starter kit is made
`available from menus, to facilitate ease of learning. All the commands, both starter and
`advanced. are available through the keyboard or function keys, to facilitate speed of use.
`Some advanced commands are sometimes put in the menus also, typically at lower levels of
`hierarchy, where they can be accessed by users who do n01 yet know their keyboard
`equivalents.
`We should recognize that speed of learning is a relative term. A system with 10
`commands is faster to learn than is one with I 00 commands, in that users will be able to
`understand what each of the 10 commands does more quickly than they can what 100 do.
`But if the application for which the interface is designed requires rich functionality. the 10
`commands may have to be used in creative and imaginative wo~ys that are difficult to learn.
`whereas the 100 commands may map quite readily onto the needs of the application.
`In the final analysis, meeting even one of these objectives is no mean task. There are
`unfortunately few absolutes in user-interface design. Appropriate choices depend on many
`different factors, including the design objectives, user characteristics, the environment of
`use , available hardware and softwJre resources, and budgets. It is especially important that
`the user-interface designer's ego be submerged, so that the user's needs, not the designer's,
`are the driving factor. There is no room for a designer with quick, off-the-cuff answers.
`Good design requires careful consideration of many issues and patience in testing
`prototypes with real users.
`
`9 .1 THE FORM AND CONTENT OF USER-COMPUTER DIALOGUES
`
`The concept of a ttSu-<omputer dialogue is central to interactive system design, and there
`are helpful analogies between user-oomputer and person-person dialogues. After all,
`people have de

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket