aboutsummaryrefslogtreecommitdiff
path: root/js/lib/geom/geom-obj.js
diff options
context:
space:
mode:
authorhwc4872012-04-24 17:16:29 -0700
committerhwc4872012-04-24 17:16:29 -0700
commitcec076988d3ff6547b7c9d74ebc80530ffcea67b (patch)
tree389a60f3d5605c082c49c4c9829cb8a560cbc26a /js/lib/geom/geom-obj.js
parent9d274a93cecc7cba543d27237e65425b2d6a393c (diff)
downloadninja-cec076988d3ff6547b7c9d74ebc80530ffcea67b.tar.gz
Snapping tocontained objects
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");