Вращение rotate_sprite ~65625 раз слишком мало
Я использую C++98 и Allegro 4, и я пытаюсь использовать rotate_sprite
функция. Документация утверждает, что в параметре угла 256 - это полный круг, а 64 - прямой угол.
void rotate_sprite(BITMAP *bmp, BITMAP *sprite, int x, int y, fixed angle);
При тестировании я обнаружил, что спрайт не вращался, но также обнаружил, что при значительном увеличении параметра мне удалось получить вращение с числом 4200000, которое, по-видимому, обеспечивает прямой угол.
rotate_sprite(world, plane, plane_x, plane_y, 4200000 * plane_r);
//plane_r is an int 0 to 3
Поэтому мой вопрос: почему 4200000 дает правильный угол, если в документации утверждается, что 64 даст правильный угол? И какова действительная величина прямого угла? 4200000 работал в этом случае, но каково точное число на будущее?
1 ответ
itofix
Функция используется для преобразования целого числа в число с фиксированной точкой 16.16, которое является типом параметра. Итак, рабочая версия примера сверху:
rotate_sprite(world, plane, plane_x, plane_y, itofix(plane_r * 64));