summaryrefslogtreecommitdiffstats
path: root/o3d/samples/o3d-webgl/bounding_box.js
diff options
context:
space:
mode:
Diffstat (limited to 'o3d/samples/o3d-webgl/bounding_box.js')
-rw-r--r--o3d/samples/o3d-webgl/bounding_box.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/o3d/samples/o3d-webgl/bounding_box.js b/o3d/samples/o3d-webgl/bounding_box.js
new file mode 100644
index 0000000..506dd2c
--- /dev/null
+++ b/o3d/samples/o3d-webgl/bounding_box.js
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2010, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+/**
+ * Creates BoundingBox from minExtent and maxExtent
+ * @param {!o3d.math.Point3} minExtent minimum extent of the box.
+ * @param {!o3d.math.Point3} maxExtent maximum extent of the box.
+ * @constructor
+ */
+o3d.BoundingBox =
+ function(minExtent, maxExtent) {
+ o3d.ParamObject.call(this);
+ this.minExtent = [minExtent[0], minExtent[1], minExtent[2]];
+ this.minExtent = [maxExtent[0], maxExtent[1], maxExtent[2]];
+};
+o3d.inherit('BoundingBox', 'ParamObject');
+
+
+/**
+ * True if this boundingbox has been initialized.
+ * @type {boolean}
+ */
+o3d.BoundingBox.prototype.valid_ = false;
+
+
+/**
+ * The min extent of the box.
+ * @type {!o3d.math.Point3}
+ */
+o3d.BoundingBox.prototype.minExtent = [0, 0, 0];
+
+
+
+/**
+ * The max extent of the box.
+ * @type {!o3d.math.Point3}
+ */
+o3d.BoundingBox.prototype.maxExtent = [0, 0, 0];
+
+
+
+/**
+ * Multiplies the bounding box by the given matrix returning a new bounding
+ * box.
+ * @param {!o3d.math.Matrix4} matrix The matrix to multiply by.
+ * @returns {!o3d.BoundingBox} The new bounding box.
+ */
+o3d.BoundingBox.prototype.mul =
+ function(matrix) {
+ o3d.notImplemented();
+};
+
+
+/**
+ * Adds a bounding box to this bounding box returning a bounding box that
+ * encompases both.
+ * @param {!o3d.BoundingBox} box BoundingBox to add to this BoundingBox.
+ * @returns {!o3d.BoundingBox} The new bounding box.
+ */
+o3d.BoundingBox.prototype.add =
+ function(box) {
+ o3d.notImplemented();
+};
+
+
+/**
+ * Checks if a ray defined in same coordinate system as this box intersects
+ * this bounding box.
+ * TODO(petersont): this can also take six coordinates as input.
+ * @param {!o3d.math.Point3} start position of start of ray in local space.
+ * @param {!o3d.math.Point3} end position of end of ray in local space.
+ * @returns {!o3d.RayIntersectionInfo} RayIntersectionInfo. If result.value
+ * is false then something was wrong like using this function with an
+ * uninitialized bounding box. If result.intersected is true then the ray
+ * intersected the box and result.position is the exact point of
+ * intersection.
+ */
+o3d.BoundingBox.prototype.intersectRay =
+ function(start, end) {
+ o3d.notImplemented();
+};
+
+
+/**
+ * Returns true if the bounding box is inside the frustum.
+ * @param {!o3d.math.Matrix4} matrix Matrix to transform the box from its
+ * local space to view frustum space.
+ * @returns {boolean} True if the box is in the frustum.
+ */
+o3d.BoundingBox.prototype.inFrustum =
+ function(matrix) {
+ o3d.notImplemented();
+};
+
+