-/*] Copyright (c) 2009-2010, Charles McGarvey [**************************
+/*] Copyright (c) 2009-2011, Charles McGarvey [*****************************
**] All rights reserved.
*
-* vi:ts=4 sw=4 tw=75
-*
* Distributable under the terms and conditions of the 2-clause BSD license;
* see the file COPYING for a complete text of the license.
*
-**************************************************************************/
+*****************************************************************************/
#ifndef _MOOF_FRUSTUM_HH_
#define _MOOF_FRUSTUM_HH_
#include <moof/math.hh>
#include <moof/plane.hh>
-
namespace moof {
-
template <int D> class aabb;
template <int D> class sphere;
-
/**
- * A six-sided volume for representing the space visible by a position
- * looking outward.
+ * A six-sided volume for representing the space visible by a position looking
+ * outward.
*/
class frustum
{
enum collision
{
- outside = 0,
- inside = 1,
+ outside = 0,
+ inside = 1,
intersecting = 2
};
void init(const matrix4& modelview, const matrix4& projection);
void init(const matrix4& modelview, scalar fovy, scalar aspect,
- scalar abutting, scalar distant);
+ scalar abutting, scalar distant);
collision contains(const aabb<3>& aabb) const;
collision contains(const sphere<3>& sphere) const;
-
private:
plane planes_[6]; // left, right, bottom, top, near, far
};
-
} // namespace moof
#endif // _MOOF_FRUSTUM_HH_