kopia lustrzana https://github.com/FreeSpacenav/libspnav
fixed the cube example
git-svn-id: svn+ssh://svn.code.sf.net/p/spacenav/code/trunk/libspnav@81 ef983eb1-d774-4af8-acfd-baaf7b16a646pull/2/head
rodzic
f250cf1598
commit
a51f7fca58
|
@ -258,9 +258,9 @@ int handle_event(XEvent *xev)
|
|||
/* if so deal with motion and button events */
|
||||
if(spev.type == SPNAV_EVENT_MOTION) {
|
||||
/* apply axis/angle rotation to the quaternion */
|
||||
float angle = 0.000005 * sqrt(SQ(spev.motion.rx) + SQ(spev.motion.ry) + SQ(spev.motion.rz));
|
||||
rot = quat_rotate(rot, angle, -spev.motion.rx, -spev.motion.ry, spev.motion.rz);
|
||||
rot = quat_normalize(rot);
|
||||
float axis_len = sqrt(SQ(spev.motion.rx) + SQ(spev.motion.ry) + SQ(spev.motion.rz));
|
||||
rot = quat_rotate(rot, axis_len * 0.001, -spev.motion.rx / axis_len,
|
||||
-spev.motion.ry / axis_len, spev.motion.rz / axis_len);
|
||||
|
||||
/* add translation */
|
||||
pos.x += spev.motion.x * 0.001;
|
||||
|
|
|
@ -16,7 +16,6 @@ static inline float v3_dot(vec3_t v1, vec3_t v2);
|
|||
static inline quat_t quat_cons(float s, float x, float y, float z);
|
||||
static inline vec3_t quat_vec(quat_t q);
|
||||
static inline quat_t quat_mul(quat_t q1, quat_t q2);
|
||||
static inline quat_t quat_normalize(quat_t q);
|
||||
static inline void quat_to_mat(mat4_t res, quat_t q);
|
||||
quat_t quat_rotate(quat_t q, float angle, float x, float y, float z);
|
||||
|
||||
|
|
|
@ -46,16 +46,6 @@ static inline quat_t quat_mul(quat_t q1, quat_t q2)
|
|||
return res;
|
||||
}
|
||||
|
||||
static inline quat_t quat_normalize(quat_t q)
|
||||
{
|
||||
float len = sqrt(q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w);
|
||||
q.x /= len;
|
||||
q.y /= len;
|
||||
q.z /= len;
|
||||
q.w /= len;
|
||||
return q;
|
||||
}
|
||||
|
||||
static inline void quat_to_mat(mat4_t res, quat_t q)
|
||||
{
|
||||
m4_cons(res, 1.0 - 2.0 * q.y*q.y - 2.0 * q.z*q.z, 2.0 * q.x * q.y + 2.0 * q.w * q.z, 2.0 * q.z * q.x - 2.0 * q.w * q.y, 0,
|
||||
|
|
Ładowanie…
Reference in New Issue