.TH QBALL 3
.SH NAME
qball \- 3-d rotation controller
.SH SYNOPSIS
.PP
.B
#include <draw.h>
.PP
.B
#include <geometry.h>
.PP
.B
void qball(Rectangle r, Mouse *mousep,
.br
.B
	Quaternion *orientation,
.br
.B
	void (*redraw)(void), Quaternion *ap)
.SH DESCRIPTION
.I Qball
is an interactive controller that allows arbitrary 3-space rotations to be specified with
the mouse.  Imagine a sphere with its center at the midpoint of rectangle
.IR r ,
and diameter the smaller of
.IR r 's
dimensions.  Dragging from one point on the sphere to another specifies the endpoints of a
great-circle arc.  (Mouse points outside the sphere are projected to the nearest point
on the sphere.)  The axis of rotation is normal to the plane of the arc, and the
angle of rotation is twice the angle of the arc.
.PP
Argument
.I mousep
is a pointer to the mouse event that triggered the interaction.  It should
have some button set.
.I Qball
will read more events into
.IR mousep ,
and return when no buttons are down.
.PP
While
.I qball
is reading mouse events, it calls out to the caller-supplied routine
.IR redraw ,
which is expected to update the screen to reflect the changing orientation.
Argument
.I orientation
is the orientation that
.I redraw
should examine, represented as a unit Quaternion (see
.IR quaternion(9.2)).
The caller may set it to any orientation.
It will be updated before each call to
.I redraw
(and on return) by multiplying by the rotation specified with the mouse.
.PP
It is possible to restrict
.I qball's
attention to rotations about a particular axis.
If
.I ap
is null, the rotation is unconstrained.
Otherwise, the rotation will be about the same axis as
.IR *ap .
This is accomplished by projecting points on the sphere to
the nearest point also on the plane through the sphere's center
and normal to the axis.
.SH SOURCE
.B \*9/src/libgeometry/qball.c
.SH SEE ALSO
.IR quaternion (3)
.br
Ken Shoemake,
``Animating Rotation with Quaternion Curves'',
.I
SIGGRAPH '85 Conference Proceedings.
