HyperspaceExplorer 0.7.1
|
00001 /* 00002 Hyperspace Explorer - visualizing higher-dimensional geometry 00003 Copyright (C) 2009-2010 Lene Preuss <lene.preuss@gmail.com> 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 2 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 along 00016 with this program; if not, write to the Free Software Foundation, Inc., 00017 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 00018 00019 */ 00020 00021 #ifndef ROTOPE_BASE_H 00022 #define ROTOPE_BASE_H 00023 00024 #include "Realm.h" 00025 #include "Rotation.h" 00026 00032 00033 00036 class RotopeInterface { 00037 00038 public: 00039 00041 const static unsigned DEFAULT_NUM_SEGMENTS = 8; 00042 00044 virtual Realm &realm() = 0; 00046 virtual const Realm &realm() const = 0; 00047 00049 virtual std::vector<VecMath::Vector<4> > projected_vertices() = 0; 00050 00052 virtual unsigned dimension() const = 0; 00054 00065 virtual unsigned &dimension() = 0; 00066 00068 static void setRotationSegments(unsigned numSegments) { 00069 _numSegments = numSegments; 00070 } 00071 00073 virtual std::string toString() = 0; 00075 operator std::string() { return toString(); } 00076 00078 void print() { std::cout << toString(); } 00079 00080 protected: 00081 00083 virtual void addTransform(unsigned, const VecMath::RotationBase *) = 0; 00084 00086 static unsigned _numSegments; 00087 00089 friend class Rotope; 00090 }; 00091 00092 #endif