00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef _VRJ_FRUSTUM_H_
00034 #define _VRJ_FRUSTUM_H_
00035
00036 #include <vrj/vrjConfig.h>
00037
00038 #include <iostream>
00039
00040
00041 namespace vrj
00042 {
00043
00049 class VJ_CLASS_API Frustum
00050 {
00051 public:
00052 enum entry
00053 {VJ_LEFT = 0, VJ_RIGHT = 1, VJ_BOTTOM, VJ_TOP, VJ_NEAR, VJ_FAR};
00054
00055 Frustum()
00056 {
00057 frust[0] = frust[1] = frust[2] = 0.0f;
00058 frust[3] = frust[4] = frust[5] = 0.0f;
00059 }
00060
00061 void setBottomLeftTopRight(float bot_val, float left_val, float top_val, float right_val)
00062 {
00063 frust[VJ_BOTTOM] = bot_val;
00064 frust[VJ_LEFT] = left_val;
00065 frust[VJ_TOP] = top_val;
00066 frust[VJ_RIGHT] = right_val;
00067 }
00068
00069 void setNearFar(float near_val, float far_val)
00070 {
00071 frust[VJ_NEAR] = near_val;
00072 frust[VJ_FAR] = far_val;
00073 }
00074
00075 void set(float left_val, float right_val, float bottom_val, float top_val, float near_val, float far_val)
00076 {
00077 frust[VJ_LEFT] = left_val;
00078 frust[VJ_RIGHT] = right_val;
00079 frust[VJ_BOTTOM] = bottom_val;
00080 frust[VJ_TOP] = top_val;
00081 frust[VJ_NEAR] = near_val;
00082 frust[VJ_FAR] = far_val;
00083 }
00084
00085 float& operator[](int elt)
00086 {
00087 return frust[elt];
00088 }
00089
00090 public:
00091 float frust[6];
00092 };
00093
00094
00095 std::ostream& operator<<(std::ostream& out, Frustum& _frust);
00096
00097 }
00098
00099 #endif