Graphics Reference
In-Depth Information
These formulas are in of themselves fairly useful if you want velocity vectors
at arbitrary points, say to aid in simulating the motion of a small solid in
the water.
However we'll go one step further. Imagine tracking a blob of water
starting at some initial position. The velocity field implied by a single
wave, evaluated at that fixed point in space, is just a periodic sinusoid in
time. As long as these velocities are small enough, the particle can't stray
too far, so to a good approximation the velocity of the particle itself will
be that periodic sinusoid. This means its position, the integral of velocity,
will also be a periodic sinusoid: the particle will follow an elliptic orbit
round and round as waves pass by. Experimental observation confirms this
is a fairly accurate description of the motion; it's not perfect—there is a
very small net movement in the direction of the wave propagation, termed
Stokes drift
—but it's pretty good.
Solving for the motion of a blob of water starting at position
x
0
,from
the simplified equation
dx/dt
=
u
(
x
0
,t
), gives this general solution for the
displacement from
x
0
:
Δ
x
=
i,j
−
2
πA
ij
i
kL
sin(
k
ω
k
t
+
θ
ij
)
e
ky
0
,
·
(
x
0
,z
0
)
−
Δ
y
=
i,j
A
ij
cos(
k
ω
k
t
+
θ
ij
)
e
ky
0
,
·
(
x
0
,z
0
)
−
(13.17)
Δ
z
=
i,j
−
2
πA
ij
j
kL
sin(
k
ω
k
t
+
θ
ij
)
e
ky
0
.
·
(
x
0
,z
0
)
−
This displacement field can be evaluated anywhere for
y
0
≤
0togivethe
location where a particle that's moving with the water should be displaced
to at any given time. For example, for a solid floating on the surface of the
water you can get its position at any time by plugging in
y
0
=0andits
“resting” horizontal
x
0
and
z
0
coordinates. Objects suspended underneath
the surface are the same, just with an exponential reduction of the motion
by
e
ky
0
for each component. (Note that the components with large
k
will be nearly zero deep enough down, so they can be dropped for more
ecient evaluation—as you go deeper, only the large wavelength, small
wave number
k
, waves have an effect.)
In fact this displacement field also tells us how to get a more accurate
free surface: we use it to deform the
y
= 0 plane. The technical term
for this, when applied to enrich a single Fourier component, is a
Gerstner
wave
, first introduced to graphics by Fournier and Reeves [Fournier and
Reeves 86].
Our earlier height field solution only included the vertical