got a gyroscope + accelerometer + magnetometer sensor fusion algorithm working
fixed the invalid state the finger tracker could get in if one finger kept moving after a two finger drag ended
Made the device orientation detection work propperly when the sensors are turned off and on
made zoom flinging work when zooming out
added some commented out code to attempt to debug what seems to be a problem
with the touch digitizer on my LG G2x: for the first 60s after the screen turns
on, single-touches work fine, but two-finger touches generate a sporadic series
of finger up and down events, with between 0 and 3 fingers detected on the
screen. After about 60 seconds of the screen being on, touch events resolve propperly.

This issue is not present on my Samsung Dart
added ability to detect whether a gyroscope is present, and use the best algorithm available
allow the user to spin the scene inertially with the gyro by holding and releasing the grab camera button
moved the gyro conversion from radians to degrees to a better place
gave trackballs the ability to track a gyroscope natively
implemented grabbing and twisting bones with the gyroscope. currently only works when the camera is unrotated from the gyroscope
part grabbing now works if the camera is rotated on it's trackball
grabbing parts with the gyro now works no matter the camera or parent orientation
no longer need to select the touch tool manually; it decides which to use based on where you tap (on figure to rotate that bone, off figure to orbit the camera)
touch to gyro grab sort of works, but needs an overhaul of the touch event dispatch logic to work correctly
refactored the touch processing to use a class to store touch status. Also looked into bugs that are now happening with touches. They happen most frequently on the fast nexus 4, which suggests interference between the ui and rendering threads. yay
made TwoFingerTrackball thread-safe, I think. This didn't get rid of the random body parts moving on tap bug, though. sigh
app now installs on sd card by default. Since the app will be fairly useless if the sd card is unmounted (as that's where bvh files will go, I expect), I decided the app may as well default to sdcard storage
completely disabled the gyroscope for the time, until I can narrow down the location of the race conditions
made the BVH query functions thread-safe. this fixed the random parts rotating on tap, and most of the camera glitches on tap
removed the debugging code to help track down the thread hazards in BVH