среда, 26 мая 2021 г.

Почему не зависящие от устройства растровые изображения перевёрнуты вверх ногами?

Это перевод Why are device-independent bitmaps upside down? Автор: Реймонд Чен.

Для всех, кто в первый раз знакомится с независимыми от устройства (device-independent) растровыми изображениями Windows, становится сюрпризом тот факт, что они перевёрнуты - в том смысле, что первая строка пикселей соответствует нижней строке изображения, а последующие строки пикселей идут по изображению вверх, при этом последняя строка пикселей соответствует самой верхней строке изображения.

Ладно, не будем называть эти растровые изображения перевёрнутыми вверх ногами. Менее осуждающий термин - называть их восходящими (bottom-up) растровыми изображениями.

Итак, почему растровые изображения, не зависящие от устройства, хранятся снизу вверх?

Для совместимости с OS/2.

В OS/2 Presentation Manager начало координатного пространства графики находится в нижнем левом углу экрана, а координата Y увеличивается по мере продвижения к верхней части экрана. Такая система координат совпадает с математически правильной системой координат, что устраняет много путаницы, когда вы начинаете заниматься математикой с вашей графикой.

Я сильно подозреваю, что компьютерная графика подразумевает использование математики.

Если вы используете математическую координатную модель, тогда все математические формулы сохранятся без необходимости вводить "случайные" отрицательные знаки для учёта перевёрнутой оси Y. Углы поворота всегда будут против часовой стрелки. Матрицы преобразования координат будут работать так же, как вы изучали в классе линейной алгебры. Всё отлично получается.

Конечно, если вы не один из таких математиков, то увеличение координаты Y вверх означает, что порядок чтения противоположен порядку увеличения координат.

Что странно.

Windows 2.0 и OS/2 начинали как хорошие друзья, поэтому Windows 2.0 приняла растровый формат OS/2, чтобы способствовать взаимодействию между ними. Как мы все знаем, эта дружба со временем испортилась, но решение о формате файла сохраняется.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.

Примечание. Отправлять комментарии могут только участники этого блога.