From 72082c4d837a8e4adc9e59751d7ec1936daea318 Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Tue, 17 Mar 2015 18:36:22 +0100 Subject: oculus can control viewing angle \o/ --- simple.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'simple.c') diff --git a/simple.c b/simple.c index 813b8fe..cf66962 100644 --- a/simple.c +++ b/simple.c @@ -9,6 +9,9 @@ #include #include +#include + +#define PI 3.141593654 void ohmd_sleep(double); @@ -56,10 +59,18 @@ int main(int argc, char** argv) for(int i = 0; i < 10000; i++){ ohmd_ctx_update(ctx); - float quat[4]; - ohmd_device_getf(hmd, OHMD_ROTATION_QUAT, quat); + float quat[4],quat_[4]; + ohmd_device_getf(hmd, OHMD_ROTATION_QUAT, quat_); + quat[0]=quat_[0]; + quat[1]=quat_[1]; + quat[2]=quat_[3]; + quat[3]=quat_[2]; + float oculus_yaw = atan2( 2.0* (quat[1]*quat[2]+quat[0]*quat[3]), (quat[0]*quat[0]+quat[1]*quat[1]-quat[2]*quat[2]-quat[3]*quat[3]) ); + float oculus_pitch = asin(2.0*(quat[0]*quat[2]-quat[1]*quat[3])); + float oculus_roll = -atan2(2.0*(quat[2]*quat[3]+quat[0]*quat[1]), -(quat[0]*quat[0]-quat[1]*quat[1]-quat[2]*quat[2]+quat[3]*quat[3])); printf("quat:\t %f\t%f\t%f\t%f\n", quat[0],quat[1],quat[2],quat[3]); + printf("oculus yaw, pitch, roll = \t%f\t%f\t%f\n", oculus_yaw*180/PI, oculus_pitch*180/PI, oculus_roll*180/PI); ohmd_sleep(.01); } -- cgit v1.2.3