[comp.sys.sgi] Mouse driven rotations

ALTMAN@SUMEX-AIM.STANFORD.EDU (Russ Altman) (03/11/88)

Does anyone have a reference to code, article or book which discusses
good ways to map mouse motion to smooth rotation and translation
of objects on a graphics screen?

I could imagine playing around a long time finding the most natural
interface.  However, I have played with some programs that have very
good algorithms.  For instance, the mouse  mapping in
the molecular graphics program MMS is quite good.

Any help?

Thanks,
Russ
-------

STAFF.SAS@CHIP.UCHICAGO.EDU (Stuart Schmukler) (03/12/88)

I recall a note in the ACM journal TOG (Transactions On Graphics) about
that subject.  It may have been a year or so ago.

SaS
-------

blbates@AERO4.LARC.NASA.GOV (Bates TAD/HRNAB ms294 x2601) (03/14/88)

     Did I miss a message?  Did some one have a question about mouse driven
rotations?  I have used a progam called PLOT3D that does that, and I have
writen several programs and subroutines that do that.  What was the exact
question?

blbates@aero4.larc.nasa.GOV (Bates TAD/HRNAB ms294 x2601) (03/15/88)

     Personally, I prefere driving rotations based on the change in mouse
position.  I have used programs that use the absolute position, but most of
the time I don't like it.  However, there have been a few cases where absolute
positioning has been better.  If you want to return to a specific orientation
or if you want to limit the amount of movement.  I have a sample FORTRAN
source I can send you that reads in x,y,z coordinates and allows you to
rotate them about all 3-axes of rotation, translate, zoom, change
perspective, Gouraud shade sufaces with and with out Z-buffering.  It is
constantly in flux, as I try new and different things, but it will give you
a good start.  I will send it in my next message (almost 1000 lines).  If you
have any questions or suggestions for improvement let me know.

wca@ut-emx.UUCP (William C. Anderson) (03/17/88)

Interestingly, almost all workstation manufacturers have settled on the
optical mouse design originated by Mouse Systems, Inc.  This mouse is
interesting in that it has *two* LED/phototransistor "eyes" in its bottom.
Although usually only one eye is turned on (this is sufficient to report
relative position), both eyes can be enabled and will report on their
respective relative positions.  This is sufficient information to generate
(small) rotations.

I wrote just such a driver for a Sun 1 workstation (serial number 91 - my
age is showing) and a simple program to test the human factors related
to the idea that by rotating and translating the *mouse*, an object on
the screen would likewise rotate and translate.  It was a very intuitive
interface, in my humble opinion.

Those readers schooled in geometrical matters will realize the limitations
of the mouse in reporting the rotation.  Whereas the information which you
need to generate accurate rotations is sin(theta) or cosine(theta), the
two eyes in fact generated information related to tangent(theta).  Therefore
the rotation information became difficult to deal with as theta -> pi/2, or
tangent(theta) -> +infinity.  Still, with a "reset rotation" command/switch
and by rotating in small increments, the user interface seemed to me
to be unusually transparent.

I have never seen this implemented elsewhere.

William Anderson - University of Texas Computation Center - wca@emx.utexas.edu

Disclaimer:	No connection with Mouse Systems Inc. or Sun Microsystems Inc.,
		except as a satisfied user of their equipment.

blbates@AERO4.LARC.NASA.GOV (Bates TAD/HRNAB ms294 x2601) (03/18/88)

     Our IRIS 3030 uses both LED's, one for left/right (x) translation and
the second for up/down (y) translation.  In the software I wrote I used the
mouse buttons to determine whether the mouse was being used for translation,
rotation, or something else.