AnoPlib - Animlets are not Particles library
 All Data Structures Namespaces Files Functions Variables
AnoPwavepropagation1.h
Go to the documentation of this file.
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