aboutsummaryrefslogtreecommitdiff
path: root/src/poser_charlesrefine.c
diff options
context:
space:
mode:
authorCharles Lohr <lohr85@gmail.com>2018-04-04 03:34:25 +0000
committerCharles Lohr <lohr85@gmail.com>2018-04-04 04:27:06 +0000
commitbd7afcf2d1cdc49fc0bf7593cba12d576b227461 (patch)
tree6fa4c1c42181aef3e944126cb78a992cae9832cc /src/poser_charlesrefine.c
parent438ae07af28fbf6f63b7598bc2de21a61222a989 (diff)
downloadlibsurvive-bd7afcf2d1cdc49fc0bf7593cba12d576b227461.tar.gz
libsurvive-bd7afcf2d1cdc49fc0bf7593cba12d576b227461.tar.bz2
Add gyro support (Still need madgwick's)
Diffstat (limited to 'src/poser_charlesrefine.c')
-rw-r--r--src/poser_charlesrefine.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/poser_charlesrefine.c b/src/poser_charlesrefine.c
index 61bd575..9aa44d9 100644
--- a/src/poser_charlesrefine.c
+++ b/src/poser_charlesrefine.c
@@ -37,6 +37,21 @@ int PoserCharlesRefine(SurviveObject *so, PoserData *pd) {
case POSERDATA_IMU: {
// Really should use this...
PoserDataIMU *imuData = (PoserDataIMU *)pd;
+
+
+ //TODO: Actually do Madgwick's algorithm
+ LinmathQuat applymotion;
+ const SurvivePose * object_pose = &so->OutPose;
+ imuData->gyro[0] *= -0.001;
+ imuData->gyro[1] *= -0.001;
+ imuData->gyro[2] *= 0.001;
+ quatfromeuler( applymotion, imuData->gyro );
+ //printf( "%f %f %f\n", imuData->gyro [0], imuData->gyro [1], imuData->gyro [2] );
+ SurvivePose object_pose_out;
+ quatrotateabout(object_pose_out.Rot, object_pose->Rot, applymotion );
+ copy3d( object_pose_out.Pos, object_pose->Pos );
+ PoserData_poser_raw_pose_func(pd, so, 0, &object_pose_out);
+
return 0;
}
case POSERDATA_LIGHT: {