root/juggler/branches/1.0/Kernel/vjFrustum.h

Revision 8789, 2.7 kB (checked in by patrickh, 7 years ago)

Copyright update.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 /*************** <auto-copyright.pl BEGIN do not edit this line> **************
2  *
3  * VR Juggler is (C) Copyright 1998, 1999, 2000, 2001, 2002
4  *   by Iowa State University
5  *
6  * Original Authors:
7  *   Allen Bierbaum, Christopher Just,
8  *   Patrick Hartling, Kevin Meinert,
9  *   Carolina Cruz-Neira, Albert Baker
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Library General Public
13  * License as published by the Free Software Foundation; either
14  * version 2 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  * Library General Public License for more details.
20  *
21  * You should have received a copy of the GNU Library General Public
22  * License along with this library; if not, write to the
23  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
24  * Boston, MA 02111-1307, USA.
25  *
26  * -----------------------------------------------------------------
27  * File:          $RCSfile$
28  * Date modified: $Date$
29  * Version:       $Revision$
30  * -----------------------------------------------------------------
31  *
32  *************** <auto-copyright.pl END do not edit this line> ***************/
33
34
35 #ifndef _VJ_FRUSTUM_H_
36 #define _VJ_FRUSTUM_H_
37
38 #include <vjConfig.h>
39
40 //------------------------------
41 //: A frustum object.
42 //
43 //      This is a frustum.
44 //
45 // @author Allen Bierbaum
46 //  Date: 10-1-97
47 //------------------------------
48 class vjFrustum
49 {
50 public:
51    enum entry
52    {VJ_LEFT = 0, VJ_RIGHT = 1, VJ_BOTTOM, VJ_TOP, VJ_NEAR, VJ_FAR};
53
54    vjFrustum()
55    {
56       frust[0] = frust[1] = frust[2] = 0.0f;
57       frust[3] = frust[4] = frust[5] = 0.0f;
58    }
59
60    void setBottomLeftTopRight(float bot_val, float left_val, float top_val, float right_val)
61    {
62       frust[VJ_BOTTOM] = bot_val;
63       frust[VJ_LEFT] = left_val;
64       frust[VJ_TOP] = top_val;
65       frust[VJ_RIGHT] = right_val;
66    }
67
68    void setNearFar(float near_val, float far_val)
69    {
70       frust[VJ_NEAR] = near_val;
71       frust[VJ_FAR] = far_val;
72    }
73
74    void set(float left_val, float right_val, float bottom_val, float top_val, float near_val, float far_val)
75    {
76       frust[VJ_LEFT] = left_val;
77       frust[VJ_RIGHT] = right_val;
78       frust[VJ_BOTTOM] = bottom_val;
79       frust[VJ_TOP] = top_val;
80       frust[VJ_NEAR] = near_val;
81       frust[VJ_FAR] = far_val;
82    }
83
84    float& operator[](int elt)
85    {
86       return frust[elt];
87    }
88
89 public:
90    float frust[6];  //: Left, Right, Bottom, Top, Near, Far
91 };
92
93
94 // ---- FRIEND FUNCTIONS ---- //
95 std::ostream& operator<<(std::ostream& out, vjFrustum& _frust);
96
97 #endif
Note: See TracBrowser for help on using the browser.