aboutsummaryrefslogtreecommitdiff
path: root/js/lib/geom/geom-obj.js
diff options
context:
space:
mode:
authorValerio Virgillito2012-04-30 14:49:49 -0700
committerValerio Virgillito2012-04-30 14:49:49 -0700
commit6b1a6994d98a18b45016b97ac8d81483109a586c (patch)
treecda8a39f8813fb5c0f9b4fb1d37007e6ec971128 /js/lib/geom/geom-obj.js
parentc8fac64d4ad8ac18744a17a5e0f0d17204355fd6 (diff)
parent48e442977ef1630e0f664265a7142320b55d7d20 (diff)
downloadninja-6b1a6994d98a18b45016b97ac8d81483109a586c.tar.gz
Merge pull request #182 from ericmueller/Canvas-interaction
Canvas interaction
Diffstat (limited to 'js/lib/geom/geom-obj.js')
-rwxr-xr-xjs/lib/geom/geom-obj.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index f2991bdb..7cb9b80f 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -375,6 +375,65 @@ var GeomObj = function GLGeomObj() {
375 } 375 }
376 }; 376 };
377 377
378
379 this.getGLCenter = function()
380 {
381 // get the normalized device coordinates (NDC) for
382 // all position and dimensions.
383 var world = this.getWorld();
384 var vpw = world.getViewportWidth(), vph = world.getViewportHeight();
385 var xNDC = 2*this._xOffset/vpw, yNDC = -2*this._yOffset/vph;
386
387 var aspect = world.getAspect();
388 var zn = world.getZNear(), zf = world.getZFar();
389 var t = zn * Math.tan(world.getFOV() * Math.PI / 360.0),
390 b = -t,
391 r = aspect*t,
392 l = -r;
393
394 // calculate the object coordinates from their NDC coordinates
395 var z = -world.getViewDistance();
396
397 // unproject to get the position of the origin in GL
398 var x = -z*(r-l)/(2.0*zn)*xNDC,
399 y = -z*(t-b)/(2.0*zn)*yNDC;
400 z = 0.0;
401
402 // transform by the object's transformation matrix
403 var ctr = MathUtils.transformPoint( [x, y, z], this.getMatrix() );
404
405 return ctr;
406 };
407
408 this.preViewToGL = function( preViewPt )
409 {
410 // get the normalized device coordinates (NDC) for
411 // all position and dimensions.
412 var world = this.getWorld();
413 var vpw = world.getViewportWidth(), vph = world.getViewportHeight();
414 var xNDC = 2*preViewPt[0]/vpw, yNDC = -2*preViewPt[1]/vph;
415
416 var aspect = world.getAspect();
417 var zn = world.getZNear(), zf = world.getZFar();
418 var t = zn * Math.tan(world.getFOV() * Math.PI / 360.0),
419 b = -t,
420 r = aspect*t,
421 l = -r;
422
423 // calculate the object coordinates from their NDC coordinates
424 var z = -world.getViewDistance();
425
426 // unproject to get the position of the origin in GL
427 var x = -z*(r-l)/(2.0*zn)*xNDC,
428 y = -z*(t-b)/(2.0*zn)*yNDC;
429 z = 0.0;
430
431 // transform by the object's transformation matrix
432 var glPt = MathUtils.transformPoint( [x, y, z], this.getMatrix() );
433
434 return glPt;
435 };
436
378 this.buildBuffers = function () { 437 this.buildBuffers = function () {
379 // this function must be overridden by the base class 438 // this function must be overridden by the base class
380 alert("GLGeomObj.buildBuffers must be overridden by base class"); 439 alert("GLGeomObj.buildBuffers must be overridden by base class");