k*(X, Y, Z) = (kX, kY, kZ)где k - некий к-т . Пусть 1/z = k. Тогда координата z :
1/Z * (X, Y, Z) = (X/Z, Y/Z, 1).Если мы хотим приблизить-отодвинуть плоскость , формулу можно записать так :
a/Z * (X, Y, Z) = (X*a/Z, Y*a/Z, a)На рисунке изображена проекционная плоскость , уравнение которой z=a,
Пример: Давайте попробуем изобразить на экране точку , которая в мировом пространстве изменяет координату z - псевдокод будет таков :
В 3D-кодировании, мы используем матрицу 3x3 (или 4x4, о чем позже) .
Вокруг оси X :
U = n*n(t) + cos(a)*(I-n*n(t)) + sin(a)*N(x).
B-splines - это не прямые , это кривые . Имеется набор ключевых точек ,
относительно которых строятся сплайны , например вот так :
Сплайны строятся с использованием дуг. Если нам нужен сплайн ,
состоящий из n дуг , нам понадобятся n+3 точек :
c(0),c(1),...,c(n+2). k-я дуга (k = 1,2,...,n) сплайна
будет рассчитана по формуле
Псевдокод может быть таким :
Псевдокод для вращения точки :
Зададимся вопросом - как реализуются игры подобно кваке , где векторно- ориентированные обьекты двигаются приятно для глаза ?
Давайте рассмотрим человеческую руку : мы можем двигать пальцами , ладонью , запястьем , предплечьем , плечом . Очевидно , что движение пальцев ни на что не влияет , в то время как движение плеча влияет на все , и все части руки ниже плеча попадают в иерархическую зависимость .
Матрицу запястья назовем R, матрицу ладони K и матрицы для
пальцев S1, S2, S3, S4, S5. Иерархия
между ними следующая :
R = R*XYZr.Матрица ладони при вращении должна уже учитывать запястье :
S? = S?*XYZs?*K.! При использовании этих формул вычисление должно идти по иерархии сверху вниз .
Для определения освещенности граней мы используем нормали . Для изменения световой окраски вместо вращения обьектных матриц проще изменить положение светового источника . Представим ситуацию , когда источник света неподвижен и направлен по оси z из минус бесконечности в начало координат и освещает куб , который находится в начале координат и который мы повернем на 90 градусов по оси y . После этого , естественно , наиболее освещенной окажется грань , которая была повернута в сторону положительной оси x . Того же самого эффекта мы добьемся , если мы куб оставим неподвижным , а развернем сам источник вокруг оси y на 90 градусов .
Выглядит это вот так :
!