Errata
Errata for the First Edition
There are some errors/typos/bugs found from the 1st edition of the book. Below are the list of such errors either found by myself or fellow readers.
Page 26
Reporter: Marc Le Renard
The description length(a*)=a.b is only true if vector b is unit-sized, else a.b = length(a*) x length(b).
Page 40
Reporter: YangWC
From the equation 1.34, the range of the first \sum should be j < i not j > i.
Page 41
Reporter: YangWC
From the equation 1.36, the definition of conjugate between two vectors should have = 0 in the RHS.
Page 44
Reporter: Marc Le Renard
There should be x.
before x
, y
, z
in the std::sin
formula.
Page 51 and 52
Reporter: Yang Shixing
In Figure 1.25 and equation 1.49, F_z should be F_x.
Page 90
Reporter: Marc Le Renard
The y-position is clamped to 0 but in the code the y-position is clamped to -7.0.
Page 94
Reporter: Marc Le Renard
From Figure 1.51, the formula should be p = \rho g h + p_{atm} instead of p = p g h + p_{atm}
Page 133
Reporter: YangWC
From Equation 2.9, the formula should be p = \frac{\kappa}{\gamma}(\frac{\rho}{\rho_0}^\gamma - 1), not p = \frac{\kappa}{\gamma}(\frac{\rho}{\rho_0} - 1)^\gamma. The code in the same page is correct.
Page 134
Reporter: YangWC
From Equation 2.10, c_s should be c_s^2 and \gamma should be removed since it’s already taken account in Equation 2.9. The code (line 8~9) also should be:
const double eosScale = targetDensity * square(_speedOfSound);
Page 137
Reporter: YangWC
From Equation 2.14, m should be m^2.
Page 184
There was a bug in the code. The fixed version is shown below:
auto u = velocity->uAccessor();
auto uPos = velocity->uPosition();
velocity->parallelForEachUIndex([&](size_t i, size_t j, size_t k) {
Vector3D pt = uPos(i, j, k);
if (isInsideSdf(_colliderSdf.sample(pt))) {
Vector3D colliderVel = collider()->velocityAt(pt);
Vector3D vel = velocity->sample(pt);
Vector3D g = _colliderSdf.gradient(pt);
if (g.lengthSquared() > 0.0) {
Vector3D n = g.normalized();
Vector3D velr = vel - colliderVel;
Vector3D velt = projectAndApplyFriction(
velr, n, collider()->frictionCoefficient());
Vector3D velp = velt + colliderVel;
uTemp(i, j, k) = velp.x;
} else {
uTemp(i, j, k) = colliderVel.x;
}
} else {
uTemp(i, j, k) = u(i, j, k);
}
});
u.parallelForEachIndex([&](size_t i, size_t j, size_t k) {
u(i, j, k) = uTemp(i, j, k);
});
Page 202
Reporter: YangWC
From Figure 3.17 (c), c should be 1/4 not 1/2.
Page 209
Reporter: YangWC
From Equation 3.36, the extra right bracket on the LHS should be removed.
Page 210
Reporter: YangWC
From Equation 3.43, f^n_3 should move to the RHS as correctly mentioned in the text.