Гэбриел Гамбетта - Компьютерная графика. Рейтрейсинг и растеризация.
Название: | Компьютерная графика. Рейтрейсинг и растеризация. | |
Автор: | Гэбриел Гамбетта | |
Жанр: | Программирование графики | |
Изадано в серии: | Библиотека программиста | |
Издательство: | Питер | |
Год издания: | 2022 | |
ISBN: | 978-5-4461-1911-0 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Компьютерная графика. Рейтрейсинг и растеризация."
За красивыми образами анимационного фильма и реалистичной средой популярных видеоигр скрываются загадочные алгоритмы. В этой книге вы познакомитесь с двумя основными направлениями современной графики: рейтрейсингом и растеризацией. Такая литература пугает новичков из-за большого количества математики. Но только не в этом случае. Познакомьтесь с 3D-рендерингом без длинных формул! Вы создадите полноценные рабочие рендеры — рейтрейсинг, симулирующий лучи света и их отражение от объектов, растеризатор 3D-моделей, научитесь создавать реалистичные отражения и тени, а также отрисовывать сцены с любой точки обзора. Наглядные примеры с псевдокодом позволят без проблем создавать рендеры на любом языке, а живые JavaScript-демки каждого алгоритма вдохновят на самостоятельные подвиги.
Читаем онлайн "Компьютерная графика. Рейтрейсинг и растеризация.". [Страница - 22]
x12 = Interpolate(y1, x1, y2, x2)
x02 = Interpolate(y0, x0, y2, x2)
Значения x для одной из сторон находятся в x02. Значения для другой стороны
берутся из объединения x01 и x12. Обратите внимание, что в x01 и x12 есть повторяющееся значение: x для y1 — одновременно последнее значение x01 и первое x12.
Нам нужно избавиться от одного из них (мы произвольно выбираем последнее
значение x01), после чего объединить эти массивы:
remove_last(x01)
x012 = x01 + x12
Tlgm: @it_boooks
106 Часть II. Растеризация
Мы получили x02 и x012, и теперь нужно определить, какой из них x_left, а какой
x_right. Для этого можно выбрать любую горизонтальную прямую (например,
среднюю) и сравнить ее значения x в x02 и x012. Если x в x02 окажется меньше, чем
x в x012, тогда x02 должен быть x_left, а если наоборот — x_right.
m = floor(x02.length / 2)
if x02[m] < x012[m] {
x_left = x02
x_right = x012
} else {
x_left = x012
x_right = x02
}
Теперь у нас есть все данные для отрисовки горизонтальных отрезков. Можно
использовать DrawLine, но она очень общая, а сейчас мы рисуем горизонтальные
прямые слева направо, значит, эффективнее будет использовать цикл for. Это даст
нам больше контроля над каждым рисуемым пикселем, что особенно пригодится
в дальнейшем.
В листинге 7.1 отражена завершенная функция DrawFilledTriangle.
Листинг 7.1. Функция для отрисовки закрашенных треугольников
DrawFilledTriangle (P0, P1, P2, color) {
// Упорядочиваем точки, чтобы y0 --">
Книги схожие с «Компьютерная графика. Рейтрейсинг и растеризация.» по жанру, серии, автору или названию:
Л. Аммерал - Машинная графика на персональных компьютерах Жанр: Программирование графики Год издания: 1992 Серия: Машинная графика на языке Си |
Л. Аммерал - Интерактивная трехмерная машинная графика Жанр: Программирование графики Год издания: 1992 Серия: Машинная графика на языке Си |
Другие книги из серии «Библиотека программиста»:
Дэн Бейдер - Чистый Python. Тонкости программирования для профи Жанр: Python Год издания: 2018 Серия: Библиотека программиста |
Скотт Чакон, Бен Штрауб - Git для профессионального программиста Жанр: Программирование: прочее Год издания: 2016 Серия: Библиотека программиста |
Яцек Галовиц - C++17 STL Стандартная библиотека шаблонов Жанр: Базы данных Год издания: 2018 Серия: Библиотека программиста |
Норман Мэтлофф - Искусство программирования на R. Погружение в большие данные Жанр: Другие языки и системы программирования Год издания: 2019 Серия: Библиотека программиста |