Graphics Reference
In-Depth Information
vector difference between the contacts is rotated more than 60 from the initial
vector difference, and treat this as a cue to rotate. Having made this rotation, when
should you rotate back to the original position? Why does a 60 threshold make
more sense for starting a manipulation than a 45 one?
Exercise 21.5: Implement the translation and rotation parts of Unicam, but
replace the dollying adjustment with one where each unit of vertical cursor move-
ment multiplies your distance to the object by some constant
1. You'll have to
decide how close you should come to the object if the user drags from the bottom
to the top of the view. Compare this “logarithmic” version to the linear version of
Unicam, and discuss which is preferable, and why.
Exercise 21.6: Enhance the photo-manipulation application so that the user
can place two fingers on the photo, and when she moves her fingers, the photo
translates and (nonuniformly) scales to maintain the contacts at the same point of
the photo. Contrast this to the uniform scaling operation we described.
Exercise 21.7: Consider a basic drawing program, in which the user may draw
points, lines, rectangles, ellipses, etc. How would you design the interaction with
elements for a multitouch environment? In conventional drawing programs, one
can resize a rectangle by dragging any corner, but with a modifier key (like CTRL)
held down, the resizing is restricted to preserve the rectangle's aspect ratio. Do you
think such control-limiting operations are more or less important in a multitouch
context? Explain.
Exercise 21.8: The photo-sorting application has a front-to-back order on the
photos: The last one loaded from the photo directory is on top. Describe some
approaches to adding the ability to reorder the photos front to back in a seam-
less way.
Exercise 21.9: We implemented the virtual trackball by comparing the current
position to the initial position and computing a rotation based on that difference.
We could instead have implemented an incremental version, in which each cursor
motion is interpreted as representing a separate tiny rotation from the prior cursor
position to the current one, and these tiny rotations are accumulated. Implement
this, and click on the frontmost point of the interaction sphere, then drag a small
circle around that frontmost point, and finish by returning to the frontmost point.
Does the cube return to its initial position? Do you personally prefer the differen-
tial or the integral version of this interaction?
Exercise 21.10: Write down, in as much detail as possible, the conceptual,
functional, sequencing, and lexical design for the virtual sphere interaction.
Exercise 21.11: Write a first-person game controller. The game-play area con-
sists of a large room populated by cylindrical poles of various radii, and you're
playing “tag” with several other players, each of whom has a controller like yours,
and an avatar that's a colored sphere. One player is “it,” and tries to tag another
player. Tagging a player happens when the avatar spheres touch. (They cannot
interpenetrate, or pass through walls or poles.) When the player who is “it” tags
another player, that player becomes “it” and the former “it” becomes untaggable
for two seconds. Your challenge is to make an effective controller using whatever
device you have: a keyboard, a mouse, a touchpad, etc. You should justify your
design decisions. The game setting is loosely sketched here so that you are not
too constrained: You can create the game in a small room with fat poles to make
navigation difficult (because the avatar spheres barely fit between them), or in a
room with no poles at all. Construct a world, and then design your controller and
discuss how your controller design is influenced by the game-play world.
ρ<
Search WWH ::




Custom Search