#ifndef _MOOF_FRUSTUM_HH_
#define _MOOF_FRUSTUM_HH_
+#include <Moof/Math.hh>
#include <Moof/Plane.hh>
namespace Mf {
+class Aabb;
+class Sphere;
+
class Frustum
{
- Matrix4 projection;
- //Plane left, right, bottom, top, near, far;
+ Plane planes_[6]; // left, right, bottom, top, near, far
public:
- Frustum(Scalar l, Scalar r, Scalar b, Scalar t, Scalar n, Scalar f);
- Frustum(Scalar fovy, Scalar aspect, Scalar near, Scalar far);
+ typedef enum
+ {
+ OUTSIDE = 0,
+ INSIDE = 1,
+ INTERSECT = 2
+ } Collision;
+
+ Frustum() {}
+ Frustum(const Matrix4& modelview, const Matrix4& projection)
+ {
+ init(modelview, projection);
+ }
+ Frustum(const Matrix4& modelview, Scalar fovy, Scalar aspect,
+ Scalar abutting, Scalar distant)
+ {
+ init(modelview, fovy, aspect, abutting, distant);
+ }
+
+ void init(const Matrix4& modelview, const Matrix4& projection);
+ void init(const Matrix4& modelview, Scalar fovy, Scalar aspect,
+ Scalar abutting, Scalar distant);
- const Matrix4& getMatrix() const;
+ Collision contains(const Aabb& aabb) const;
+ Collision contains(const Sphere& sphere) const;
};