rotate_sprite вращение в ~ 65625 раз меньше

Я использую C ++ 98 и Allegro 4, и я пытаюсь использовать функцию rotate_sprite. docume ntation утверждает, что в параметре угла 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, но какова точная цифра на будущее?


person Scott Mikutsky    schedule 06.05.2016    source источник


Ответы (1)


Функция itofix используется для преобразования целого числа в число с фиксированной запятой 16.16, которое является типом параметра. Итак, рабочая версия примера сверху:

rotate_sprite(world, plane, plane_x, plane_y, itofix(plane_r * 64));
person Scott Mikutsky    schedule 06.05.2016