Subject: Re: pie menus
Newsgroups: comp.windows.misc,comp.windows.news

In article <[email-masked]> [email-masked] (David Lewis) writes:
>In article <[email-masked]>, [email-masked] (Andreas C. Lemke) writes:
>> I've heard of a (new) kind of menus in which items are arranged like a
>> pie chart.  The menu pops up with the mouse cursor in the center so
>> that each item can be reached by moving the mouse in the corresponding
>> direction.  This supposedly improves performance for skilled users who
>> know which item is where.  Accessing an item in a regular vertical
>> list menu requires more feedback from the eye to tell whether the
>> correct item has been reached.
>> ...
>I've been thinking of writing one of these circular menus for X11R2 since
>seeing a taped demonstration of one shown by Ben Schneiderman (of
>"Designing the User Interface" fame) on some unspecified system; I think
>it was an Apple II or Atari micro.  

Ben Shneiderman was kind enough to trust me with his camera for a week
to make that video tape, which I showed at my talk at the 1987 Usenix
Computer Graphics workshop in Cambridge, Massachusetts. The tape
demonstrates three implementations of pie menus, running on a Sun 3/50
workstation: My first implementation, square pie menus hacked into the
X10 "uwm" window manager; Mark Weiser's SunView pie menus, used in his
wonderful game "SDI"; and finally my NeWS pie menus in round windows,
written in NeWS's object oriented extended PostScript, as a subclass
of LiteMenu.  I'll be making a more up-to-date tape for CHI'88, soon.

>I was planning to have the outside circular. 

You're going to have a hard time doing that with X11! Good luck!

>There is a small dead spot in the center.  Note that this
>arrangement allows for two-item selection; for example, which pie
>slice you are in could select color, and how far out from the center
>you are in could select intensity; or the wedge selects the font and the
>distance selects the type size.
> Andreas, they exist, but I don't know of any commercial implementation.

My implementation of pie menus for NeWS is free and in the public
domain.  I've just posted the source code for NeWS 1.1 pie menus to
the NeWS-makers mailing list (comp.windows.news). (Make sure you get
the bug fix I posted subsequently!)  Because of the nature of NeWS,
you don't have to change applications to use pie menus -- they use
whatever is the DefaultMenu at the time they are started. So after
you've loaded in piemenu.ps, you'll get pie menus everywhere!

> Problems that I am running into: 1) How to fit the label into the box.

If you don't confine menu labels to their wedge shaped sectors, the
label layout problem is much simpler! You just need to ensure that
none of the labels overlap, and that it's visually obvious which
sector is associated with which label.

The NeWS implementation calculates an inner label radius, inside of
which it draws lines to delimit the sectors, and around the outside of
which it justifies the labels. The round menu window's radius is just
big enough to encompass all of the labels plus a border. 

Labels are positioned so that (respectively) the labels on the
(left/right) side of the menu have their (right/left) edge vertically
centered at points on the inner radius, and the very (top/bottom)
labels are horizontally centered on their (bottom/top) edge. i.e.:

+---B---+
R label L
+---T---+

Labels on the (Right/Left/very Bottom/very Top) of the menu are
positioned so that point (R/L/B/T) is on the inner radius, in the
direction of the center of its sector. 

The inner label radius is calculated by starting with a minimum
radius, and going around the menu checking to see of the bounding
boxes of any two adjacent labels overlap. If they do, the radius is
pushed out until they don't, and the loop is continued. Once you've
checked each pair of neighbors, the inner radius will be big enough so
that no labels will overlap. The outer menu window radius is then
calculated by finding the distance of the furthest label outer corner
from the menu center.

>2) How to deal with a menu containing a large number of items.

With both pie menus and linear menus, the fewer the items, the easier
the menus are to use.  With linear menus of many items, the cursor
must move further on the average, but the target areas are the same
size as with smaller menus.  With pie menus of many items, the cursor
must move the same distance, but the target areas are smaller.
However, the user may trade off cursor movement for target size, by
moving the cursor further out, to where the wedge shaped target
regions are wider! The active regions can extend out beyond the edge
of the menu window, all the way to the screen edge. 

It's good practice to group items into logically related submenus, to
keep the number of items in the menu low. Pie menus work very well for
nested menu selection, especially for experienced users. They have a
nice kinesthetic feel, and make good use of muscle memory. You
remember a path through a tree of nested menus as a series of
directions, sort of like navigating from room to room in Zork.  Since
menu selection is defined by direction, and delimited by mouse clicks,
you can rapidly mouse ahead through familiar menus, without having to
look at the screen.  It feels somewhat like shifting gears with a
manual transmission.

> Quite coincidentally, my group today interviewed a PhD in Human Factors,
>and in discussion of user interaction styles this question came up.
>She said that this sort of menu is useful only for certain situations:
>where the labels are VERY short; where the labels are clearly attached
>to something (example: a,b,c,d,e for a multiple-choice answer); or
>for graphic use in choosing color or something similar. They'd
>also be useful in a menu with icons. 

While a pie menu will generally take up more screen real estate than
the same linear menu, I find that with the layout scheme described
above, one or two word menu items work just fine. If you can plan your
menus so that long lines are near the top or bottom of the menu,
instead of to the left or right, their outer radius will tend to be
smaller.

Jack Callahan performed an experiment comparing the selection time and
error rates of pie menus and linear menus. The menus had 8 items, and
the subjects were novices without any mouse experience. Menu tasks
were classified in three categories, by the type of their selection,
as pie (N, NE, E...), linear (A, B, C...), and unclassified (Open,
Copy, Delete...).  Using pie menus, the subjects made selections
faster, and with fewer errors, for all three task types.

>They're also  useful in situations
>in which the menu is not ordered (as long as it fits the other requirements);
>otherwise, the eye has trouble deciding which pie wedge to scan first.
>-- 
>David B. Lewis    {ihnp4,allegra,ulysses,rutgers!mtune}!homxc!lewisd
>"New Jersey -- Landfill of Enchantment"

There are certain types of task for which a pie menu's circular layout
is especially appropriate. They're useful in situations with pairs of
complementary menu items, which can be placed in opposite directions,
and orthogonal pairs, which can be placed at right angles.

As well as the obvious compass rose and clock face, there are other
types of groupings that also work well. For example:

      Wednesday
 Tuesday \ / Thursday
Monday  > O <  Friday
  Sunday / \ Saturday
        Today

(I claim that this is an easy-to-remember menu, because it has 8 items
[which is an all around symmetric, asthetically pleasing number], and
the weekdays are in a natural left to right order. Plus it's always
easy to choose today!)

	-Don