aboutsummaryrefslogtreecommitdiff
path: root/dep/include/g3dlite/G3D/Box2D.h
diff options
context:
space:
mode:
Diffstat (limited to 'dep/include/g3dlite/G3D/Box2D.h')
-rw-r--r--dep/include/g3dlite/G3D/Box2D.h121
1 files changed, 0 insertions, 121 deletions
diff --git a/dep/include/g3dlite/G3D/Box2D.h b/dep/include/g3dlite/G3D/Box2D.h
deleted file mode 100644
index 80accad89dd..00000000000
--- a/dep/include/g3dlite/G3D/Box2D.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- @file Box2D.h
-
- @maintainer Morgan McGuire, http://graphics.cs.williams.edu
-
- @created 2001-06-02
- @edited 2008-12-27
-
- Copyright 2000-2009, Morgan McGuire.
- All rights reserved.
- */
-
-#ifndef G3D_Box2D_h
-#define G3D_Box2D_h
-
-#include "G3D/platform.h"
-#include "G3D/Vector2.h"
-
-namespace G3D {
-
-class CoordinateFrame;
-typedef class CoordinateFrame CFrame;
-class Rect2D;
-typedef class Rect2D AABox2D;
-
-/**
- 2D oriented box
- @cite http://www.flipcode.com/archives/2D_OBB_Intersection.shtml
- */
-class Box2D {
-private:
- /** Corners of the box, where 0 is the lower left. */
- Vector2 m_corner[4];
-
- /** Two edges of the box extended away from corner[0], with length
- = 1 / extentSquared */
- Vector2 m_axisin[2];
-
- /** Two edges of the box extended away from corner[0], with unit length */
- Vector2 m_axis[2];
-
- /** Centroid of the box */
- Vector2 m_center;
-
- /** origin[a] = m_corner[0].dot(m_axisin[a]); */
- float origin[2];
-
- /** Surface area */
- float m_area;
-
- Vector2 m_extent;
-
- /** Returns true if other overlaps one dimension of this. */
- bool overlaps1Way(const Box2D& other) const;
-
-
- /** Updates the axes after the m_corners move. Assumes the
- m_corners actually form a rectangle. */
- void computeAxes();
-
-public:
-
- /**
- @param center World-space center
- @param w Width along object-space x-axis
- @param h Height along object-space y-axis
- @param angle Counter-clockwise angle from object-space x-axis in radians
- */
- Box2D(const Vector2& center = Vector2(0, 0), float w = 0, float h = 0, float angle = 0);
-
- Box2D(const AABox2D& b);
-
- Box2D(const Vector2& min, const Vector2& max);
-
- /** Transform @a b by @a frame, discarding the Z components, and
- compute the new box.*/
- Box2D(const CFrame& frame, Box2D& b);
-
- inline bool contains(const Vector2& v) const {
- // Take to object space:
- const Vector2& p = v - m_center;
- float x = p.dot(m_axisin[0]);
- float y = p.dot(m_axisin[1]);
-
- // Must be within extent/2 on both axes in object space
- return (abs(x) <= 0.5f) && (abs(y) <= 0.5f);
- }
-
- /** @brief Distance from corner(0) to the next corner along the box's local axis a. */
- inline const Vector2& extent() const {
- return m_extent;
- }
-
- /** @brief Unit length vector along axis @a a */
- inline const Vector2& axis(int a) const {
- debugAssert(a == 0 || a == 1);
- return m_axis[a];
- }
-
- /** @brief Surface area */
- inline float area() const {
- return m_area;
- }
-
- inline const Vector2& corner(int i) const {
- debugAssert(i >=0 && i <= 3);
- return m_corner[i];
- }
-
- inline const Vector2& center() const {
- return m_center;
- }
-
- /** Returns true if the intersection of the boxes is non-empty. */
- inline bool overlaps(const Box2D& other) const {
- return overlaps1Way(other) && other.overlaps1Way(*this);
- }
-};
-
-} // G3D
-#endif