Main Page | Class List | Directories | File List | Class Members | File Members

smoke.h

Go to the documentation of this file.
00001 /*
00002  * Physically Based Simulation, SS 2005
00003  *
00004  * Markus Liechti (liechtim@student.ethz.ch)
00005  * Yoshimi Takano (yoshi@student.ethz.ch)
00006  * Stefan Wismer (swismer@student.ethz.ch)
00007  *
00008  * $Id: smoke.h,v 1.11 2005/06/25 20:23:44 ytakano Exp $
00009  */
00010 
00013 #ifndef __smoke_H__
00014 #define __smoke_H__
00015 
00016 #include <list>
00017 #include "opengl.h"
00018 #include "particle.h"
00019 
00021 #define SMOKE "data/smoke.bmp"
00022 
00024 #define SMOKEMASK "data/smokemask.bmp"
00025 
00027 #define SMOKE_DAMPING 0.04
00028 
00030 #define SMOKE_MASS_MEAN 0.01
00031 
00033 #define SMOKE_MASS_STD 0.001
00034 
00036 #define SMOKE_POS_STD 0.1
00037 
00039 #define SMOKE_VEL_LENGTH_STD 1.0
00040 
00042 #define SMOKE_VEL_ANGLE_MEAN 0.0
00043 
00045 #define SMOKE_VEL_ANGLE_STD 0.1
00046 
00048 #define SMOKE_LIEFTIME_MEAN 2.0
00049 
00051 #define SMOKE_LIEFTIME_STD 1.0
00052 
00054 #define SMOKE_FORCE_MEAN_X 0.0
00055 
00057 #define SMOKE_FORCE_MEAN_Y 0.15 // points upward
00058 
00060 #define SMOKE_FORCE_STD 0.001
00061 
00068 #define SMOKE_FORCE_AGE_COEFF 0.5
00069 
00070 using namespace std;
00071 
00075 class Smoke {
00076 private:
00077         list<Particle> particles;
00078         void setExternalForces();
00079         
00080         SDL_Surface *texture, *mask;
00081 
00082 public:
00084         int textureWidth, textureHeight;
00085 
00087         unsigned char *image;
00088 
00092          Smoke();
00093 
00097         void clear();
00098 
00107         void createSmoke(vector2 &start, vector2 &velocity, int n);
00108 
00113         void doPhysics(component timestep);
00114 
00118         void draw();
00119 };
00120 
00121 #endif

Generated on Sun Jul 10 22:32:04 2005 for S12 by  doxygen 1.4.2