С типом float рано или поздно сталкивается почти любой разработчик. Сначала все выглядит просто. Есть float32, есть float64, можно хранить дробные числа, делить, умножать, считать проценты, средние значения, коэффициенты и что угодно еще. Кажется, что это просто «числа
В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня. Вот полная реализация этого алгоритма: float FastInvSqrt(float x) { float xhalf = 0.5f * x; int i = *(int*)&x; // представим биты float в виде…
В 2005 году id Software опубликовала под лицензией GPL-2 исходный код своей игры 1999 года Quake III Arena. В файле code/game/q_math.c есть функция для вычисления обратного квадратного корня числа, которая на первый взгляд выглядит очень любопытным алгоритмом: float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs =…
Иногда в софте появляются баги и глюки. И игры не исключение. В них баги бывают настолько странные, что они в конечном итоге могут делать игру намного интереснее. Такие ошибки увлекательны: немыслимые анимации, странные реплики персонажей, появление/иcчезновение вещей или…