Несколько лет назад достать книжку по алгоритмам графики было проблемой, найти можно было разве что несколько относительно объемных изданий отечественных авторов.В последнее время на прилавках стали-таки появляться книги, посвященные программированию графики. В ближайших журнала выпусках мы рассмотрим некоторые из них.
На мой взгляд, проблемой отечественных книг по графике является отсутствие структурированной подачи материала. Создается впечатление, что некоторые авторы придерживаются принципа "что знаю, то и пишу". В книгу включается вся информация, которая кажется автору полезной, однако в результате страдает читатель - под эффектным заголовком может скрываться все что угодно. Тем не менее многие книги достойны весьма внимательного прочтения.
В этом смысле учебник "Компьютерная графика" (автор - В. Порев, 432 c.) представляет собой хороший пример книги, некоторые главы которой очень полезны, другие переполнены ненужными деталями (для учебника начального уровня), а некоторые слишком кратки (на мой взгляд).
Автор следует традиционной манере подачи материала: цвет и свет, обработка изображений, преобразования координат, модели описания поверхностей, модели закрашивания, методы программирования в среде Windows и с помощью библиотеки OpenGL. Все примеры даются на языках C/C++.
Первая часть книги оставляет двоякое впечатление. С одной стороны, упоминаются многие важные темы, такие как модели цвета, аффинные и проективные преобразования, растровые алгоритмы, модели описания поверхностей. Однако подробно разобранные темы перемеюжатся с весьма поверхностными описаниями, которые даются без какого-либо обоснования. При этом трудно разобраться, почему автор решил раскрыть одну тему и оставить лишь несколько слов про другую (не менее важную!). Например, под примеры отображения трехмерных объектов отведена целая глава, а модели освещения описаны на нескольких страницах. Очень кратко дана обработка изображений, не описан математический аппарат векторов и матриц.
Вторая часть книги - "Программирование компьютерной графики", - может служить практическим руководством для тех, кто только начинает программировать под Windows API. Доходчиво и в то же время кратко разобраны основы программирования в среде Windows, использование функций графического интерфейса, работа с контекстом устройства (дисплея, принтера). Приведено довольно много примеров программ, использующих примитивы Windows API. Автор не привязывает изложение к высокоуровневым библиотекам (MFC, VCL и т.д.), что увеличивает общность, но затруднят изложение массой мелких особенностей работы с Windows API. Однако разобравшись с этим, для читателя не составит трудности перейти на использование API высокого уровня.
Работа с библиотекой OpenGL дана очень кратко, разобраны только самые базовые вопросы - создание контекста OpenGL, вывод треугольников и примитивов, настройка освещения. Читателю, желающему серьезно работать с OpenGL, вряд ли можно рекомендовать эту книгу, однако для начинающих материала и примеров достаточно.
Резюме: Несмотря на некоторые недостатки, книга представляет собой грамотный учебник. Ее можно рекомендовать начинающим, особенно тем, у кого возникают проблемы с программированием графики под Windows и кого не очень интересуют математические основы компьютерной графики.
Вводные курсы вообще очень популярны, подавляющее большинство книг по графике - для начинающих. И это при практически полном отсутствии книг для профессионалов на полках магазинов. Книги на английском не в счет.
Рассмотрим еще один учебник для начинающих: "Интерактивная компьютерная графика. Вводный курс на базе OpenGL" (Э. Эйнджел, 592 c.). Книгу можно охарактеризовать как достаточно серьезный труд, попытку охватить многое, оставаясь в рамках учебника для начинающих. Разобраны вопросы организации графических систем, двухмерная графика, организация взаимодействия с пользователем. Достаточно полно и подробно рассматриваются геометрические преобразования: системы координат, однородные координаты, работа с матрицами. Понравились разделы про визуализацию результатов научных исследований, процедурные методы, криволинейные поверхности. Присутствует весьма интересная и полезная глава "Иерархические графические модели". В конце каждой главы есть упражнения для самоконтроля.
С самого начала автор использует библиотеку OpenGL для примеров практической реализации различных алгоритмов. Пожалуй, это не очень удачное решение, так как в терминах OpenGL не удается описать, например, алгоритмы трассировки лучей, процедурные методы и т.д. Описание библиотеки "разбросано" по тексту всей книги и читатель, целью которого является изучение OpenGL, будет разочарован.
В конце книги приводится неплохое описание требуемых математических основ: евклидовы пространства, ортогонализация Грама-Шмидта, операции с матрицами. При этом учебник написан доступным языком, с хорошими иллюстрациями. Примеры программ приведены на языке С. Для использования OpenGL с оконным API используется переносимая библиотека GLUT.
Резюме: Хороший учебник. Написан в американском стиле, немного многословно. Рассмотрен широкий спектр задач компьютерной графики.
Комментарии
Отправить комментарий