From 8ef8a020aaf77ef4da63091266157ee5b3bec56e Mon Sep 17 00:00:00 2001 From: Renato Cordeiro Ferreira Date: Tue, 12 May 2015 17:22:30 -0300 Subject: [PATCH] Rotate world with quaternions --- App/objViewer.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/App/objViewer.js b/App/objViewer.js index ae0288a..75b73ce 100644 --- a/App/objViewer.js +++ b/App/objViewer.js @@ -53,6 +53,7 @@ var ambientColor, diffuseColor, specularColor; // camera definitions var trackball; +var camera_rotate = new RotationQuaternion(1.0, vec3(0.0, 0.0, 0.0)); var eye = vec4(1.0, 0.0, 0.0, 1.0); var at = vec4(0.0, 0.0, 0.0, 1.0); @@ -247,12 +248,10 @@ window.onload = function init() { } else { if (mousedownL) { - var camera_rotate = trackball.rotation(actualcanX, actualcanY, - lastcanX, lastcanY, 'm'); + var trackball_q = trackball.rotation(actualcanX, actualcanY, + lastcanX, lastcanY, 'q'); - eye = camera_rotate.rotate(eye); - at = camera_rotate.rotate(at); - up = camera_rotate.rotate(up); + camera_rotate = camera_rotate.mul(trackball_q); } } break; @@ -391,9 +390,10 @@ var render = function() { var ratio = wrapper.clientHeight/wrapper.clientWidth; // create model view matrix - var e = vec3(eye[0], eye[1], eye[2]); - var a = vec3(at[0], at[1], at[2]); - var u = vec3(up[0], up[1], up[2]); + var e = camera_rotate.rotate(eye); + var a = camera_rotate.rotate(at); + var u = camera_rotate.rotate(up); + modelViewMatrix = lookAt(e, a, u); modelViewMatrix = mult(modelViewMatrix, scaleM(vec3(ratio, ratio, ratio)));