На этом шаге мы рассмотрим некоторые преобразования координат.
Сначала рассмотрим общие вопросы преобразования координат. Пусть задана n-мерная система координат в базисе (k1, k2,.... kn), описывающая положение точки в пространстве с помощью числовых значений ki. В компьютерной графике чаще всего используется двумерная (n=2) и трехмерная (n=3) системы координат.
Если задать другую, N-мерную, систему координат в базисе (m1, m2,..., mN) и поставить задачу определения координат в новой системе, зная координаты в старой, то решение (если оно существует) можно записать в таком виде:
где fi - функция пересчета i-й координаты, аргументы - координаты в системе ki.
Можно поставить и обратную задачу - по известным координатам m1, m2,..., mN определить координаты k1, k2,.... kn. Решение обратной задачи запишем так:
где Fi - функции обратного преобразования.В случае, когда размерности систем координат не совпадают (n <> N), осуществить однозначное преобразование координат зачастую не удается. Например, по двумерным экранным координатам нельзя без дополнительных условий однозначно определить трехмерные координаты отображаемых объектов.
Если размерности систем совпадают (n = N), то также возможны случаи, когда нельзя однозначно решить прямую или обратную задачи.
Преобразование координат классифицируют:
По виду функций преобразования различают линейные и нелинейные преобразования. Если при всех i = 1, 2, ... , N функции fi - линейные относительно аргументов (k1, k2,.... kn), то есть
fi = ai1k1+ ai2k2+ ... + ainkn+ ai,n+1
Если хотя бы для одного i функция f - нелинейная относительно (k1, k2,.... kn), тогда преобразование координат в целом не линейно.
Например, преобразование
X = 3х + 5y, Y = 4xy + 10y
Линейные преобразования наглядно записываются в матричной форме:
Здесь матрица коэффициентов (аij) умножается на матрицу-столбец (ki) и в результате получается матрица-столбец (mi).Напомним некоторые факты из алгебры матриц. Для двух матриц А размером (m*n) и В размером (n*p):
произведением матриц является матрица С = А*В размером (m*p): для которой элементы cij вычисляются по формуле:Правило вычисления элементов матрицы С можно легко запомнить по названию "строка на столбец". И действительно, для вычисления любого элемента cij необходимо умножить элементы i-й строки матрицы А на элементы j-го столбца матрицы В.
Произведение матриц определено только для случая, когда количество столбцов матрицы А равно количеству строк матрицы В.
Вернемся к преобразованиям координат. Рассмотрим более подробно некоторые отдельные типы преобразований.
На следующем шаге мы рассмотрим аффинные преобразования на плоскости.