surface_param.hpp

Go to the documentation of this file.
00001 /*
00002 **    TP 4ETI CPE Lyon
00003 **    Copyright (C) 2012 Damien Rohmer
00004 **
00005 **    This program is free software: you can redistribute it and/or modify
00006 **    it under the terms of the GNU General Public License as published by
00007 **    the Free Software Foundation, either version 3 of the License, or
00008 **    (at your option) any later version.
00009 **
00010 **   This program is distributed in the hope that it will be useful,
00011 **    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 **    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 **    GNU General Public License for more details.
00014 **
00015 **    You should have received a copy of the GNU General Public License
00016 **    along with this program.  If not, see <http://www.gnu.org/licenses/>.
00017 */
00018 
00019 
00020 #ifndef _SURFACE_PARAM_HPP_
00021 #define _SURFACE_PARAM_HPP_
00022 
00023 #include <v3.hpp>
00024 #include <vector>
00025 
00026 namespace cpe
00027 {
00028 class surface_param
00029 {
00030     public:
00031 
00032         // ********************************************* //
00033         // ********************************************* //
00034         //  CONSTRUCTORS
00035         // ********************************************* //
00036         // ********************************************* //
00037 
00039         surface_param();
00041         surface_param(const unsigned int& Nu,const unsigned int& Nv);
00042 
00043         // ********************************************* //
00044         // ********************************************* //
00045         //  Size
00046         // ********************************************* //
00047         // ********************************************* //
00048 
00049 
00051         void resize(const unsigned int& Nu,const unsigned int& Nv);
00052 
00054         const unsigned int& size_u() const;
00056         const unsigned int& size_v() const;
00057 
00058 
00059         // ********************************************* //
00060         // ********************************************* //
00061         //  Data
00062         // ********************************************* //
00063         // ********************************************* //
00064 
00066         const v3& operator()(const unsigned int& ku,const unsigned int& kv) const;
00068         v3& operator()(const unsigned int& ku,const unsigned int& kv);
00069 
00070 
00071         // ********************************************* //
00072         // ********************************************* //
00073         //  Internal access
00074         // ********************************************* //
00075         // ********************************************* //
00076 
00078         const v3* pointer() const;
00080         v3* pointer_unprotected();
00081 
00082 
00083     protected:
00084 
00086         const v3& get(const unsigned int& ku,const unsigned int& kv) const;
00087 
00089         void assert_size(const unsigned int& ku,const unsigned int& kv) const;
00090 
00091     private:
00092 
00093 
00094 
00095 
00096 
00098         unsigned int internal_size_u;
00100         unsigned int internal_size_v;
00102         std::vector<v3> internal_data;
00103 };
00104 }
00105 
00106 #endif
Generated on Mon Feb 27 18:30:05 2012 by  doxygen 1.6.3