code: function(x,z){
  				var xx = x / this._scale.x + this.width * 0.5,
  					zz = z / this._scale.y + this._depth * 0.5,
  					isec = new IsectData3D();
  				if(xx >= 0 && xx < this.width && zz >= 0 && zz < this._depth){
  					var x2 = ~~Math.min(xx + 1, this.width - 1),
  						z2 = ~~Math.min(zz + 1, this._depth - 1),
  						flxx = ~~xx,
  						flzz = ~~zz,
  
  						a = this.getVertexAtCell(flxx,flzz),
  						b = this.getVertexAtCell(x2, flzz),
  						c = this.getVertexAtCell(x2,z2),
  						d = this.getVertexAtCell(flxx,z2),
  						r = new Ray3D(new Vec3D(x, 10000, z), new Vec3D(0, -1, 0)),
  						i = new TriangleIntersector(new Triangle3D(a, b, d));
  
  					if(i.intersectsRay(r)){
  						isec = i.getIntersectionData();
  					} else {
  						i.setTriangle(new Triangle3D(b, c, d));
  						i.intersectsRay(r);
  						isec = i.getIntersectionData();
  					}
  				}
  				return isec;
  			}
docs: Computes the 3D position (with elevation) and normal vector at the given
  2D location in the terrain. The position is in scaled world coordinates
  based on the given terrain scale. The returned data is encapsulated in a
  {@link toxi.geom.IsectData3D} instance.
  @param {Number} x
  @param {Number} z
  @return {IsectData3D} intersection data parcel