EPhysics: fix issues with rotation
authorLeandro Dorileo <dorileo@profusion.mobi>
Tue, 11 Dec 2012 21:11:07 +0000 (21:11 +0000)
committerLeandro Dorileo <dorileo@profusion.mobi>
Tue, 11 Dec 2012 21:11:07 +0000 (21:11 +0000)
We must convert degrees to radians wherever operating with angles.

SVN revision: 80718

legacy/ephysics/src/bin/test_cube_3d.c
legacy/ephysics/src/lib/ephysics_quaternion.cpp

index cf7156ee1c76f033078d4b19b2dedfcda0ad93a4..2db46d39380d8a28a555a82798237d3f29fb842e 100644 (file)
@@ -20,7 +20,7 @@ _mouse_move_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void
    ry = mmove->cur.output.x - mmove->prev.output.x;
 
    ephysics_body_rotation_get(body, &quat_prev);
-   ephysics_quaternion_euler_set(&quat_delta, -ry * 0.06, - rx * 0.04, 0);
+   ephysics_quaternion_euler_set(&quat_delta, -ry * 3.43, - rx * 2.29, 0);
    ephysics_quaternion_multiply(&quat_prev, &quat_delta, &quat);
    ephysics_body_rotation_set(body, &quat);
 }
index c5abcd0753214872b7c27e83a334b304bdcd7301..899204d56315142f889449e063103cdccc90de11 100644 (file)
@@ -80,7 +80,7 @@ ephysics_quaternion_axis_angle_get(const EPhysics_Quaternion *quat, double *nx,
    if (nx) *nx = bt_quat.getAxis().getX();
    if (ny) *ny = bt_quat.getAxis().getY();
    if (nz) *nz = bt_quat.getAxis().getZ();
-   if (a) *a = bt_quat.getAngle();
+   if (a) *a = bt_quat.getAngle() * RAD_TO_DEG;
 }
 
 EAPI void
@@ -111,7 +111,7 @@ ephysics_quaternion_axis_angle_set(EPhysics_Quaternion *quat, double nx, double
      }
 
    axis = btVector3(nx, ny, nz);
-   bt_quat = btQuaternion(axis, a);
+   bt_quat = btQuaternion(axis, a / RAD_TO_DEG);
    _ephysics_quaternion_update(quat, &bt_quat);
 }
 
@@ -127,7 +127,7 @@ ephysics_quaternion_euler_set(EPhysics_Quaternion *quat, double yaw, double pitc
      }
 
    bt_quat = btQuaternion();
-   bt_quat.setEuler(yaw, pitch, roll);
+   bt_quat.setEuler(yaw / RAD_TO_DEG, pitch / RAD_TO_DEG, roll / RAD_TO_DEG);
    _ephysics_quaternion_update(quat, &bt_quat);
 }
 
@@ -294,7 +294,7 @@ ephysics_quaternion_angle_get(const EPhysics_Quaternion *quat1, const EPhysics_Q
    bt_quat1 = btQuaternion(quat1->x, quat1->y, quat1->z, quat1->w);
    bt_quat2 = btQuaternion(quat2->x, quat2->y, quat2->z, quat2->w);
 
-   return bt_quat1.angle(bt_quat2);
+   return bt_quat1.angle(bt_quat2) * RAD_TO_DEG;
 }
 
 EAPI double