00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef NL_FRUSTUM_H
00027 #define NL_FRUSTUM_H
00028
00029 #include "nel/misc/types_nl.h"
00030 #include "nel/misc/vector.h"
00031
00032
00033 namespace NL3D
00034 {
00035
00036 using NLMISC::CVector;
00037
00038
00039
00046 class CFrustum
00047 {
00048 public:
00050 float Left, Right, Bottom, Top, Near, Far;
00051 bool Perspective;
00052
00053
00055 CFrustum() {}
00057 CFrustum(float left, float right, float bottom, float top, float znear, float zfar, bool perspective= true)
00058 {
00059 init( left, right, bottom, top, znear, zfar, perspective);
00060 }
00061
00062
00064 void init(float left, float right, float bottom, float top, float znear, float zfar, bool perspective= true);
00065
00067 void init(float width, float height, float znear, float zfar, bool perspective= true);
00068
00075 void initPerspective(float fov, float aspectRatio, float znear, float zfar);
00076
00078 void getValues(float &left, float &right, float &bottom, float &top, float &znear, float &zfar) const;
00079
00080
00085 CVector project(const CVector &vec) const;
00086
00091 CVector unProject(const CVector &vec) const;
00092 };
00093
00094
00095 }
00096
00097
00098 #endif // NL_FRUSTUM_H
00099
00100