水面を作るスレ

このエントリーをはてなブックマークに追加
4名前は開発中のものです。
水面の"波"表現
for(int i = width; i < p.length - width; i++)
 v[i] += SPEED * (-4 * p[i] + p[i - width] + p[i - 1] + p[i + 1] + p[i + width]);
for(int i = width; i < p.length - width; i++)
 p[i] += v[i];
5名前は開発中のものです。:01/12/05 21:06 ID:TYWTzEe8
俺的改良版。理論的に正しいかは不明。。
float _RT2 = 1.0f / 1.41423563f;
for(int i = width + 1; i < p.length - width - 1; i++) {
 velocity[i] += WAVE * (-(_RT2 + 1) * 4 * p[i]
  + p[i - width] + p[i - 1] + p[i + 1] + p[i + width]
  + _RT2 * (p[i - width - 1] + p[i - width + 1] + p[i + width + 1] + p[i + width - 1]));
 if(velocity[i] < VMIN)
  velocity[i] = VMIN;
}
速度の上限決めてやると、もっさりとしていい感じ。
6名前は開発中のものです。:01/12/05 21:07 ID:TYWTzEe8
一点だけつまみ上げてやれば波紋になる。
>>5はなにげにルート2が間違ってたり、、、

無意味に1次元ばーじょん
for(int i = 1; i < p.length - 1; i++)
 v[i] += SPPED * (-2 * p[i] + p[i - 1] + p[i + 1]);
for(int i = 1; i < p.length - 1; i++)
 p[i] += v[i];

固定端店と自由短点での挙動の違いとか、
なつかしいね。
7名前は開発中のものです。:01/12/05 21:08 ID:TYWTzEe8
って、ソースの載せられてもわかんねーよ。
だれか説明してみい