Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Теоретический материал. Преобразование двумерных координат



ЛАБОРАТОРНАЯ РАБОТА №8

Преобразование двумерных координат. Динамическое

Преобразование координат.

1. Цель работы: исследование математических методов и алгоритмов преобразования двумерных и трехмерных координат в процессе построения сложных графических изображений, а так же изучение алгоритмов построения динамических изображений со сложным преобразованием координат в графическом режиме.

Задачи работы.

Освоить приемы работы с системой двумерных координат.

Содержание работы.

- Получить задание у преподавателя.

- Написать и отладить на компьютере программу, реализующую требуемое преобразование изображения без масштабирования.

- Если изображение искажено, ввести масштабирующие коэффициенты.

- Результат работы программы продемонстрировать преподавателю.

- Напечатать листинг программы.

Требования к отчету

Отчет выполняется на листах А4 формата и должен содержать:

- название работы, постановку задачи, порядок выполнения работы и полученное изображение;

- ответы на контрольные вопросы.

Теоретический материал

Преобразования координат широко используются при синтезе как статических, так и динамических изображений с целью реализации таких операций над рисунком как перенос, поворот, подобие, симметрия. Перенос является достаточно простой операцией, т.к. реализуется путем изменения значений одной и/или второй координат. Другие операции, а тем более их комбинация, характеризуются большей сложностью и требуют математических преобразований. Для простоты в данной лабораторной работе рассматриваются только двумерные преобразования. Обычно в данном процессе исходно задаются основные координаты x1, y1, а через них в виде уравнений просчитываются вторичные координаты x22, y22.

x22 = f(x1, y1),

y22 = f(x1, y1).

Наиболее распространены так называемые аффинные преобразования, которые предполагают сохранение после расчета вторичных координат параллельность и формы у прямых. Общий вид уравнений таких преобразований имеет вид

x22 = axxx1 + axyy1 + ax,

y22 = ayxx1 + ayyy1 + ay.

При этом сдвиг без поворота характеризуется матрицей коэффициентов

    ax
    ay

где ax, ay - задают сдвиг соответственно по осям x и y, т.е.

x2 = x1 + ax,

y2 = y1 + ay.

Операция масштабирования (преобразования подобия) реализуется матрицей

М    
  М  

Зеркальное отображение относительно диагонали первого квадранта (смена координатных осей) предполагает матрицу вида

     
     

Повороту на угол α против часовой стрелки соответствует матрица

сosα -sinα  
sinαα cosα  

Комбинации двух или более операций преобразования соответствует комбинация коэффициентов соответствующих матриц. Так, например, сдвиг с одновременным поворотом реализуется матрицей

сosα -sinα ах
sinαα cosα аy

Описание среды программирования

При преобразовании координат в среде языка программирования Turbo Pascal необходимо учесть, что графический экран ПК представляет собой четвертый квадрант прямоугольной системы координат, т.е. начало координат находится в левом верхнем углу. Полноценная система координат создается самим пользователем путем переноса ее начала вниз и/или вправо на величины Dx и/или Dy, т.е. реализуется локальная система, сдвинутая на данные величины относительно глобальной. В дальнейшем, глобальные координаты всех точек (xг, yг) пересчитываются через локальные (xл, yл) по следующим уравнениям:

xг = xл + Dx,

yг = Dy - yл.

Вторая проблема, возникающая обычно при сложных преобразованиях, - разная разрешимость (количество пикселей на единицу длины) графического экрана по горизонтали и вертикали. Попытка изобразить квадрат путем задания одинакового количества пикселей по его сторонам приводит к отображению прямоугольника, вытянутого по высоте. Данный эффект отсутствует только при разрешении 640х480 и особенно усиливается при установке подрежимов с низким количеством пикселей по вертикали, например, 640х200 (см. лабораторную работу №3). Для устранения данного эффекта средствами языка Паскаль производится предварительное масштабирование изображения с помощью процедуры GetAspectRatio (mx, my), где mx, my - переменные, в которые записывается число точек по горизонтали и вертикали. В дальнейшем, при построении требуемого изображения все координаты по оси x должны умножаться на отношение my/mx или, наоборот, все координаты по оси y умножаются на отношение mx/my. При этом возникает еще одна проблема, связанная с особенностями языка Паскаль: получаемые при умножении масштабированные координаты могут принимать вещественные значения, что запрещено для параметров графических примитивов данного языка. Поэтому все результаты таких умножений должны округляться функцией Round.





Дата публикования: 2015-02-20; Прочитано: 227 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...