30-07-2003 15:09 [IPP] Разбор полётов. Единицы измерения
Intel Performance Primitives Library. Версия 3.0.

Rotate
Rotates an image around the origin (0, 0) and shifts it.
[…]
Arguments
[…]
angle
The angle of rotation in degrees. The source image is rotated clockwise around the origin (0, 0).

Внимание, вопрос. Что не так в этом фрагменте?

(Ответ в комментариях)
Комментарии:
30-07-2003 15:14
Камрад с блокнотиком
  1. Угол задаётся в градусах. В то время как вся окружающая программа, очевидно, будет представлять углы в радианах, чтобы от них легко брались sin() и cos().
  2. Направление поворота на самом деле зависит от того, в какую сторону направлена ось y. Если x всегда направлена вправо, то y может быть направлен вверх или вниз. Поскольку функции никак не указали, что мы считаем верхом, а что низом, она не может нам гарантировать, в каком направлении она повернёт изображение.
  3. Если в документации написана правда и изображение будет таки повёрнуто по часовой стрелке, программист будет долго сидеть и подбирать, в каких местах надо поставить минус, а в каких не надо. Потому что у него углы явно считаются против часовой стрелки.


Пиши так, чтобы твоя функция не требовала перевода единиц измерения при сопряжении с другими библиотеками. Если в стандартной библиотеке есть функция double cos(double angle), где angle считается в радианах против часовой стрелки от оси x, то и твоя функция поворота должна принимать угол аргументом типа double, выраженным в радианах против часовой стрелки.

отредактировано: 30-07-2003 15:20 - Centaur

Закрыть