Esate.ru
Esate.ru Уроки Программирование 3D Уроки OpenGL + C#Алгоритмы геометрических преобразований в компьютерной графике. OpenGl.

Уроки OpenGL + C#

Выполняя главы последовательно, вы ознакомитесь с основами синтаксиса C#, увидите, как просто создавать оконные приложения с помощью .net, познакомитесь с библиотекой Tao, которая обеспечивает поддержку OpenGl в среде .NET, изучите основы 2D визуализации, работу как с примитивами, так и принцип загрузки и построения сложных 3D моделей , экспортированных из 3D редакторов.

9.1 Алгоритмы геометрических преобразований в компьютерной графике. OpenGl.

Общие сведения

Геометрические преобразования – это такие преобразования графических объектов, при которых изменяется направление, масштаб и положение координатной системы, используемой для определения местонахождения точек в пространстве. При этом само пространство не подвергается каким-либо изменениям, т.е. сама структура графического изображения сохраняется. Следовательно, при геометрических преобразованиях неважен тип объекта, так как в преобразованиях участвуют точки.

Основными операциями, которые относятся к геометрическим преобразованиям двумерных графических объектов, являются:
  • Перенос начала координат
  • Масштабирование
  • Поворот осей координат
Рассмотрим эти операции более подробно.

Перенос

При выполнении данной операции происходит перенос начала координат на некоторую величину.

Обозначим старую систему координат СК1, новую – СК2. При переносе новое начало координат в системе координат СК1 лежит в точке (Tx, Ty), в новой же системе СК2 старое начало координат является точкой (-Tx, -Ty). Начало координат (x,y) системы СК1 в системе СК2 станет точкой (x-Tx, y-Ty).

Стоит упомянуть, что при переносе сохраняются как направление осей координат, так и масштаб.

Матрица, необходимая для выполнения операции переноса имеет следующий вид:
Уроки OpenGL + C#: Геометрическое преобразование Рисунок 1. Геометрическое преобразование "Перенос".

Масштабирование

При выполнении операции масштабирования отрезок единичной длины на оси X становится отрезком длиной Sx на оси X’; отрезок единичной длины на оси Y становится отрезком длиной Sy на оси Y’. Получается, что в новой системе точка с координатой (1,1) преобразуется в точку (Sx, Sy), точка (x,y) будет иметь координаты (x*Sx, y*Sy).

Стоит отметить, что при масштабировании начало координат и направление осей новой и старой систем координат совпадают, меняется лишь масштаб по осям.

Матрица, необходимая для выполнения операции масштабирования имеет следующий вид:
Уроки OpenGL + C#: Геометрическое преобразование Рисунок 2. Геометрическое преобразование "Масштабирование".

Поворот

Рассмотрим частный случай поворота в пространстве XYZ – поворот относительно оси Z, проходящей перпендикулярно плоскости XY.

Предположим, что центр вращения совпадает с началом координат. Тогда при повороте системы координат XY в декартовой плоскости на некоторый произвольный угол w относительно центра вращения, координаты произвольной точки С в системе координат (x’,y’) можно выразить через координаты этой точки в изначальной системе координат (x, y):

x' = x cos w + y sin w,

y' = -x sin w + y cos w

Для выполнения операции поворота используется следующая матрица:

Уроки OpenGL + C#: Геометрическое преобразование Рисунок 3. Геометрическое преобразование "Поворот".
OpenGL поддерживает встроенную систему матриц для описания трансформации сцены или объектов, но для понятия принципов работы трансформации объектов в трехмерном пространстве мы рассмотрим данные математические перемещения, реализовав их самостоятельно.


Источник: Esate.ru
08 Января 2010


Комментарии (из ветки форума)


Мне нравится0
Цитата
Тогда, при повороте системы координат XY в декартовой плоскости на некоторый произвольный угол а относительно центра вращения, координаты произвольной точки С в системе координат (x’,y’) можно выразить через координаты этой точки в изначальной системе координат (x, y):
x' = x cos w + y sin w,
y' = -x sin w + y cos w.
Что такое w и откуда оно взялось?
Мне нравится0
Имелся ввиду угол a.
Выше в статье должно быть написано "...произвольный угол w относительно..."

Оставить сообщение:

Авторизируйтесь или Зарегистрируйтесь
чтобы оставлять комментарии.

OpenGL

OpenGL

OpenGL (Open Graphics Library — открытая графическая библиотека, графический API) — спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

Регистрация

Регистрируясь, вы принимаете правила сайта. Если вы не получили код подтв. регистрации - не забудьте проверить папку спам.
Логин*
Email*
Пароль*
Подтверждение пароля*
 
Логин*
Код*
 

Восстановление пароля

Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш E-mail. Если код не пришел в течении нескольких минут - проверьте папку спам.
Логин

или Email
 
Логин*
Код подтверждения*
Новый пароль*
Подтверждение пароля*
 

Авторизация

Пожалуйста, авторизуйтесь, для входа на сайт с помощью соц. сети:
  • Используйте вашу учетную запись на Facebook.com для входа на сайт.
  • Используйте вашу учетную запись VKontakte для входа на сайт.
  • Используйте вашу учетную запись Google для входа на сайт.

или с помощью аккаунта на сайте:

Логин
Пароль