AnoPlib - Animlets are not Particles library
|
00001 /* ************************************************************************* 00002 @file AnoPwavepropagation1.h 00003 @project AnoPlib 00004 @module AnoPwavepropagation1 00005 @brief electromagnatic waves propagation :-) 00006 @date 23.11.2010 00007 @copyright Daniel Krajzewicz 00008 @licence GPL 00009 @author Daniel Krajzewicz 00010 @email d.krajzewicz@googlemail.com 00011 ------------------------------------------------------------------ 00012 AnoPlib - small "animlet" library, see http://sf.net/projects/anoplib 00013 Copyright (C) 2009-2010 Daniel Krajzewicz 00014 00015 This program is free software: you can redistribute it and/or modify 00016 it under the terms of the GNU General Public License as published by 00017 the Free Software Foundation, either version 3 of the License, or 00018 (at your option) any later version. 00019 00020 This program is distributed in the hope that it will be useful, 00021 but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 GNU General Public License for more details. 00024 00025 You should have received a copy of the GNU General Public License 00026 along with this program. If not, see <http://www.gnu.org/licenses/>. 00027 ------------------------------------------------------------------ 00028 Remarks: 00029 ------------------------------------------------------------------ 00030 ToDo: 00031 * *********************************************************************** */ 00032 #ifndef ANOP_WAVEPROPAGATION1 00033 #define ANOP_WAVEPROPAGATION1 00034 00035 00036 /* ========================================================================= 00037 * included modules 00038 * ======================================================================= */ 00039 #include <AnoP.h> 00040 #include <AnoPhelpers.h> 00041 #include <GL/gl.h> 00042 00043 00044 /* ========================================================================= 00045 * class and struct definitions 00046 * ======================================================================= */ 00047 // @brief The animlet definition structure 00048 struct wireless1Struct { 00050 double pos[2]; 00052 double step; 00053 }; 00054 00055 00059 class AnoPwavepropagation1 : public AnoP::AnoPsystem<wireless1Struct> { 00060 public: 00064 AnoPwavepropagation1(unsigned int bufSize=10) : AnoP::AnoPsystem<wireless1Struct>(bufSize) {} 00065 00066 00069 void preRender() throw() { 00070 glMatrixMode(GL_PROJECTION); 00071 glLoadIdentity(); 00072 glMatrixMode(GL_MODELVIEW); 00073 glLoadIdentity(); 00074 glTranslated(-1,-1,0); 00075 glScaled(1./200, 1./200, 1.); 00076 } 00077 00078 00084 bool render(wireless1Struct &s, unsigned int timeDiff, void * const something) throw() { 00085 glPushMatrix(); 00086 int off = s.step; 00087 glTranslated(s.pos[0], s.pos[1], 0); 00088 for(int i=0; i<5; ++i) { 00089 glPushMatrix(); 00090 int step = s.step + i * 100; 00091 double scale = step; 00092 glScaled(scale/256., scale/256., scale/256.); 00093 double c = 1. / scale * 50; 00094 glTranslated(0, 0, (double) i / 10.); 00095 glColor4d(c,c,c,c); 00096 //glScaled(100., 100., 100.); 00097 int q = step>72 ? step : step / 2; 00098 AnoPhelpers::drawOutlineCircle(1., .9, q, 0, 360.); 00099 glPopMatrix(); 00100 } 00101 glPopMatrix(); 00102 s.step += 1; 00103 if(s.step>100) { 00104 s.step = 1; 00105 } 00106 return true; 00107 } 00108 }; 00109 00110 #endif