#include <vector>Go to the source code of this file.
Classes | |
| struct | _S_WaterQuad |
Functions | |
| void | initWater (int W, int H) |
| Initialize the water surface. | |
| void | computeWater (float fTime) |
| Compute water vertices and normals at a certain time instant. | |
| void | drawWaterQuads (const std::vector< _S_WaterQuad > &Qs) |
| Draw all quads of the water surface. | |
|
|
Compute water vertices and normals at a certain time instant. Call after camera initialization Definition at line 145 of file water.cpp. References computeHeight(), computeNormal(), g_CameraX, g_CameraY, g_CameraZ, g_H, g_hf, g_hf_normals, g_W, g_xe, g_ye, g_ze, and normal. Referenced by initWater(), and timerCallback().
00146 {
00147 // Compute eye position
00148 g_xe = g_CameraX; // cos( g_fCameraX*M_PI/180.0f ) * g_fViewDistance;
00149 g_ze = g_CameraZ; //sin( g_fCameraX*M_PI/180.0f ) * g_fViewDistance;
00150 g_ye = g_CameraY;//cos( g_fCameraY*M_PI/180.0f ) * g_fViewDistance;
00151
00152 // Init height field
00153 float *p = g_hf;
00154 for (int y=0; y<g_H; y++) {
00155 for (int x=0; x<g_W; x++) {
00156 *p = computeHeight( x,y, fTime );
00157 p++;
00158 }
00159 }
00160
00161 // Init normals
00162 normal *pN = g_hf_normals;
00163 for (int y=0; y<g_H; y++) {
00164 for (int x=0; x<g_W; x++) {
00165 computeNormal( x,y, (*pN)[0], (*pN)[1], (*pN)[2] );
00166 pN++;
00167 }
00168 }
00169 }
|
|
|
Draw all quads of the water surface.
Referenced by drawHeightField(). |
|
||||||||||||
|
Initialize the water surface.
Definition at line 93 of file water.cpp. References computeWater(), fourier(), g_H, g_hf, g_hf_fc_im, g_hf_fc_re, g_hf_normals, g_W, and normal. Referenced by initGL().
00094 {
00095 // Validate params
00096 assert( W>0 && W*H > 0 );
00097 // Clear old data
00098 delete[] g_hf;
00099 delete[] g_hf_normals;
00100 delete[] g_hf_fc_re;
00101 delete[] g_hf_fc_im;
00102
00103 // Init new data
00104 g_W = W;
00105 g_H = H;
00106 g_hf = new float[W*H];
00107 g_hf_normals = new normal[W*H];
00108 g_hf_fc_re = new float[W*H];
00109 g_hf_fc_im = new float[W*H];
00110
00111 for (int x=0; x<g_W; x++) {
00112 for (int y=0; y<g_H; y++) {
00113 complex<float> fc = fourier( x,y );
00114 g_hf_fc_re[x+y*g_W] = real(fc);
00115 g_hf_fc_im[x+y*g_W] = imag(fc);
00116 }
00117 }
00118 g_hf_fc_re[0] = 0;
00119 g_hf_fc_im[0] = 0;
00120
00121 computeWater( 0.0f );
00122 }
|
1.3.6