Под окном вывода всегда будем подразумевать прямоугольник в рамках которого будет производиться вывод какого - то объекта.
Для масштабирования графика необходимо знать:
Xmin Xmax
Ymin Ymax
fx = Xmax - Xmin
fy = Ymax - Ymin
fx, fy - коэффициенты масштабирования.
С учётом этих коэффициентов любая точка, которую мы хотим вывести ,
будет иметь вид:
X` = Xmin + fx( X - Xmin )
Y` = Ymin + fy( Y - Ymin) .
Область вывода не обязана совпадать с окном вывода.
Мы рассчитываем значение Y для каждого X , и если значение Y превышает размер окна, то мы просто обрезаем этот Y.
Мировые координаты (XW,YW,ZW)
Видовое преобразование
видовые координаты (XE,YE,ZE)
Перспективное преобразование
перспективные координаты (X,Y)
Видовое преобразование:
Задана точка наблюдения и объект наблюдения. Система мировых координат - правая. Начало ее координат приблизительно равно центру объекта.
(3.1)
[XE,YE,ZE,1] = [XW,YW,ZW,1]V (3.2)
1) Перенос точки O в точку E
T = (3.3)
2) Поворот вокруг оси Z координат системы на угол в отрицательном направлении. Ось X перпендикулярна OE, а ось Y направлена по перпендикулярной составляющей OE.
RZ =
RZ = (3.4)
3) Ось Z совпадает с EO (поворот системы координат вокруг оси X на p-j) в положительном направлении.
p - j = -( p - j) = j - p
Rx =
Rx = (3.5)
4) Изменение направления оси X
MYZ = (3.6)
V = T (3.7)
(0 0 0 1) - добавляем в матрицу * такую строку и столбец