Аффинные преобразования
Масштабирование Преобразование масштабирования увеличивает или уменьшает размеры объекта. Команда масштабирования glScale (arg1, arg2, arg3) с тремя аргументами – коэффициентами масштабирования по каждой из осей. Если масштабные множители больше единицы объект растягивается в заданном направлении, если меньше объект сжимается. Масштабные множители могут иметь отрицательные значения, при этом изображение переворачивается по соответствующей оси. При двумерных построениях значение коэффициента по оси Z игнорируется. После команд рисования следует восстановить нормальный масштаб, чтобы каждое следующее обращение к обработчику перерисовки экрана не приводило бы к последовательному уменьшению / увеличению изображения.
Поворот Для поворота изображения используется команда glRotate (arg1, arg2, arg3, arg4) с четырьмя аргументами: arg1 – угол поворота (в градусах), arg2, arg3, arg4 – вектор поворота.
Сдвиг Преобразованиесдвига смещает точки в новые позиции в соответствии с заданным вектором смещения. Перенос системы координат осуществляется командой glTranslate (arg1, arg2, arg3) arg1, arg2, arg3 – величины переноса по каждой из осей. Для поворота вокруг произвольной фиксированной точки сначала нужно выполнить преобразование сдвига, совмещающую заданную фиксированную точку с началом координат, потом выполнить преобразование поворота вокруг начала координат, а затем обратное преобразование сдвига. Порядок манипуляции с системой координат: вначале перенос, затем поворот, по окончании рисования – в обратном порядке: поворот, затем перенос.
Закрашивание объектов сцены
В трёхмерном пространстве поверхность объектов характеризуется материалом. Материал может отражать, поглощать и пропускать свет различной длины волн. В зависимости от характеристик материала и от свойств источника света мы видим объекты различными. Свойства материала задаются с помощью команды glMaterialfv(). Характеристики свойств материала, определяют соответствующие им символьные константы, которые представлены в таблице 1.3.
Таблица 1.3. Характеристики свойств материала
Зеркальный цвет задаёт цветовую гамму бликов материала, степень зеркального отражения определяет, насколько близка поверхность к идеальному зеркалу (определяется числом из интервала [0,128]). Свойства материала задаются для внешней и внутренней стороны фигуры. glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE,@MaterialFront); glMaterialfv (GL_BACK, GL_AMBIENT_AND_DIFFUSE,@MaterialBack); Существует несколько режимов рисования многоугольников. Чтобы изменить метод отображения многоугольника используется команда: glPolygonMode (GLenum face, Glenum mode)
Параметр mode определяет, как будут отображаться многоугольники, а параметр face устанавливает тип многоугольников, к которым будет применяться эта команда и могут принимать следующие значения:
Таблица 1.4. Значения параметров face и mode
Пример: GlPolygonMode (GL_FRONT, GL_POINT); GlPolygonMode (GL_ BACK, GL_LINE); GlPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
Источники света
Без источника света изображения не видно. По умолчанию освещение отключено. Что бы инициализировать источник, и включить обработчик расчёта воздействия источника на объекты достаточно выполнить команды: glEnable (gl_lighting); glEnable (gl_light0); Источник света по умолчанию располагается в пространстве с координатами (0,0,¥), можно создавать источник света в любой точке пространства изображений. Параметры источника света задаются с помощью команды, glLightfv (source, parameter, pointer_to_array). Первый параметр команды – идентификатор источника Второй аргумент – символическая константа, задающая атрибут Третий – ссылка на структуру, содержащую задаваемые значения для данного атрибута.
Таблица 1.5. Константы, задающие свойства окружающей среды и позицию источника света
Для того чтобы внутренняя сторона объекта была видна необходимо включить освещенность для внутренней стороны многоугольника. Световая модель с освещением внутренней части многоугольника включается или выключается соответствующей функцией glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, 1). Второй аргумент 0 или 1 (вкл. или выкл.).
Наложение текстуры
Популярное: Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему стероиды повышают давление?: Основных причин три... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (147)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |