**注意点:** * このコードは非常に基本的なものであり、実際の流体シミュレーションに比べると簡略化されています。 * 圧力計算は省略されているため、流体の非圧縮性は保証されません。 * より高度な流体シミュレーションを行うには、Navier-Stokes方程式を解く必要があります。 * WebGLを使用することで、GPUを利用した高速な流体計算が可能になります。 このコードを参考に、様々な流体表現に挑戦してみてください。
マウスイベントリスナー: canvas.addEventListener('mousemove', (event) => { ... }); で、canvas 要素上でのマウス移動イベントをリッスンします。 event.clientX と event.clientY で、canvas 要素内でのマウス座標を取得し、mouseX と mouseY に格納します。 simulate() 関数の変更: if (mouseX !== null && mouseY !== null) で、マウスがcanvas上にいるかどうかを判定します。 マウス座標をセル座標に変換し、その周辺のセルに対して速度と密度を操作します。 vx[y][x] += (mouseX - x * CELL_SIZE) * 0.01; で、マウスとセルの距離に応じて速度ベクトルを更新します。 density[y][x] = 1; で、マウス位置に密度を追加します。 これで、マウスで流体を動かすことができるようになりました。