gltest/src/GLObjects/WaveMesh.cpp

31 lines
683 B
C++

#include "WaveMesh.h"
float WaveMesh::heightMap(std::size_t nx, std::size_t ny) const {
float x = _xs[nx];
float y = _xs[ny];
float d = 50*sqrtf(x*x + y*y);
return cosf(d - _shift)*expf(-d/10.0f)/2;
}
float WaveMesh::heightMap(float fx, float fy) const {
float d = 50*sqrtf(fx*fx + fy*fy);
return cosf(d - _shift)*expf(-d/10.0f)/2;
}
void WaveMesh::setShift(float shift) {
_shift = shift;
update();
}
WaveMesh::WaveMesh(ShaderProgram *shader, std::size_t size): Mesh(shader, size), _shift(0) {
float step = 1.0f/size;
for(std::size_t i = 0; i < size; ++i) {
_xs[i] = step*i - 0.5f;
_ys[i] = _xs[i];
}
}
WaveMesh::~WaveMesh() {
}