MathHelper

MathHelper is a small collection of functions that act as small wrappers or cheaper versions of more complex operations.

  1. Sin/Cos LUT
  2. Sine
  3. Cosine
  4. The multiplier

Sin/Cos LUT

Sine and cosine are made faster by being read from a lookup table, which is computed on startup. It has 2^16 entries.

for (int i = 0; i < 65536; ++i)
    table[i] = std::sin(i * M_PI * 2.0f / 65536);

Sine

Sine is gotten by indexing into the LUT.

return SIN_TABLE[int(x * 10430.378f) & 0xFFFF]

Cosine

Cosine is also gotten by indexing into the LUT, but shifted over

return SIN_TABLE[int(x * 10430.378f + 16384.0f) & 0xFFFF]

The multiplier

The multiplier comes from the formula ( 2^16) / (PI * 2)(?).

TODO: Add other MathHelper entries!