From: Leandro Dorileo Date: Tue, 11 Dec 2012 21:11:07 +0000 (+0000) Subject: EPhysics: fix issues with rotation X-Git-Tag: submit/devel/efl/20131022.203902~2902 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2e8fcf0a2351784559d32c01ccbea484f4a0cf55;p=platform%2Fupstream%2Fefl.git EPhysics: fix issues with rotation We must convert degrees to radians wherever operating with angles. SVN revision: 80718 --- diff --git a/legacy/ephysics/src/bin/test_cube_3d.c b/legacy/ephysics/src/bin/test_cube_3d.c index cf7156e..2db46d3 100644 --- a/legacy/ephysics/src/bin/test_cube_3d.c +++ b/legacy/ephysics/src/bin/test_cube_3d.c @@ -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); } diff --git a/legacy/ephysics/src/lib/ephysics_quaternion.cpp b/legacy/ephysics/src/lib/ephysics_quaternion.cpp index c5abcd0..899204d 100644 --- a/legacy/ephysics/src/lib/ephysics_quaternion.cpp +++ b/legacy/ephysics/src/lib/ephysics_quaternion.cpp @@ -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