4. Введите некоторые промежуточные величины: т - w • u*, п - w • v*, e = yjm2 +п2, а также г - (тли* + nv*)/e.

5. Вычтите из вектора w часть вектора г так, чтобы оставшаяся часть стала ортогональной векторам и* и v*. Обозначьте с = w - ex. (Докажите, что с • и* = с • v* = 0.)

6. Нормируйте вектор с, для чего задайте вектор w* - c/S3, где 53 - |с|.

7. Таким образом, матрица

Френсис Хилл

является ортогональной и поэтому представляет вращение. (Вычислите ее определитель: если он равен -1, то просто замените лу* на -лу*.)

Френсис Хилл

Докажите, что и*Я4 = и*, у*Я, - v* + ^и*/52 - у/52 и лу*Я, = лу*. Сначала докажите следующее свойство тензорного произведения: для любых векторов а, Ь, с справедливо равенство а(Ь®с) = - (а • Ь)с. Затем примените это свойство и факт ортогональности векторов и*, v*, лу* для доказательства истинности первых трех соотношений.

5.9. Дополнительная литература

11. Докажите, что и*Я2 = и*, у*Я2 = V* и ч/*Н2 = \у* + ег/53 = \у/53.

12. Объедините все промежуточные результаты и покажите, что М = 5/?Я,Я2,

Френсис Хилл

Отметим, что такое разложение не является единственным, поскольку векторы u, V и w можно было бы ортогонализировать в другом порядке. Например, мы могли вначале сформировать вектор w* = w/ |w|, затем вычесть часть v из w* и получить вектор, ортогональный к вектору w*, а затем вычитанием вектора из и получить вектор, ортогональный к двум остальным.

Напишите подпрограмму

void decomposeCDBL m [3][3]. DBL S [3][3]. DBL R [3][3], DBL Hl [3][3].DBL H2 [3][3]).

которая принимает матрицу m и вычисляет матрицы s, r, ht и Я2 методом 12 шагов, как это описано у Голдмана. Величина DBL определена как double.

Известны и другие способы разложения трехмерного преобразования - см., например, работы Томаса [Thomas, 195] и Шумейка [Shoemake, 186].

Тематическое задание 5.7. Рисование трехмерных сцен, описанных на языке SDL

Уровень сложности II.

Разработайте законченное приложение, которое использует классы типа Scene, Shape, Affine4 и поддерживает чтение и рисование сцепы, описанной в SDL-файле. Для упрощения работы используйте классы, содержащиеся на web-сайте книги. Конкретизируйте любые методы drawOpenGLO, которые вам потребуются. Разработайте файл описания сцены, содержащий описания переключателя, деревянного стула н нескольких стен.


⇐ Предыдущая| |Следующая ⇒