logo search
ГОСы - ответы [2012]

2. Проекции в трехмерной графике. Их математическое описание. Камера наблюдения.

Способ перехода от трехмерных объектов к их изображениям на плоскости будем называть проекцией. Далее рассматриваются различные виды проекций.

Для того, чтобы увидеть на плоскости монитора трехмерное изображение нужно уметь задать способ отображения трехмерных точек в двумерные. Сделать это можно, вообще говоря, по-разному. В общем случае проекции преобразуют точки, заданные в системе координат размерностью n в точки системы координат размерностью меньшей, чем n. В нашем случае точки трехмерного пространства преобразуются в точки двумерного пространства. Проекции строятся с помощью проецирующих лучей или проекторов, которые выходят из точки, которая называется центром проекции. Проекторы проходят через плоскость, которая называется проекционной или картинной плоскостью и затем проходят через каждую точку трехмерного объекта и образуют тем самым проекцию. Тип проецирования на плоскую, а не искривленную поверхность, где в качестве проекторов используются прямые. а не искривленные линии, называется плоской геометрической проекцией. Плоские геометрические проекции делятся на два вида: центральные и параллельные. Если центр проекции находится на конечном расстоянии от проекционной плоскости, то проекция – центральная. Если же центр проекции удален на бесконечность, то проекция – параллельная.

Центральная проекция. Параллельная проекция.

Точкой схода называется точка пересечения центральных проекций любой совокупности параллельный прямых, которые не параллельны проекционной плоскости. Существует бесконечное множество точек схода. Точка схода называется главной если совокупность прямых параллельна одной из координатных осей. В зависимости от того, сколько координатных осей пересекает проекционную плоскость различают одно-, двух- и трехточечные проекции.

Одноточечная проекция.

Простейшей является параллельная прямоугольная проекция. В ней совместно изображаются виды сверху, спереди и сбоку. Эти проекции часто используются в черчении. В зависимости от соотношения между направлениями проецирования и нормалью к проекционной плоскости параллельные проекции разделяются на ортографические или ортогональные, в которых эти направления совпадают, и косоугольные, в которых они не совпадают. В зависимости от положения осей системы координат объекта относительно проекционной плоскости ортографические проекции делятся на аксонометрические и изометрические. В изометрических проекциях оси системы координат составляют одинаковые углы с проекционной плоскостью. В аксонометрических проекциях эти углы разные. Центральная перспективная проекция приводит к визуальному эффекту, подобному тому, который дает зрительная система человека. При этом наблюдается эффект перспективного укорачивания, когда размер проекции объекта изменяется обратно пропорционально расстоянию от центра проекции до объекта. В параллельных проекциях отсутствует перспективное укорачивание, за счет чего изображение получается менее реалистичным и параллельные прямые всегда остаются параллельными.

Типы проекций.

Рассмотрим более подробно центральную перспективную проекцию с математической точки зрения. Для получения формул центральной перспективной проекции расположим оси системы координат, проекционную плоскость и центр проекции как показано на рис

Рис. Расположение осей координат на экране.

Будем имитировать на экране то, что как будто бы реально находится в пространстве за ним. Заметим, что получилась левосторонняя система координат. Будем считать что плоскость экрана монитора совпадает с проекционной плоскостью. Прежде чем переходить к собственно вычислениям следует сделать одно важное замечание. Поскольку поверхность любого трехмерного объекта содержит бесконечное число точек, то необходимо задать способ описания поверхности объекта конечным числом точек для представления в компьютере. А именно, будем использовать линейную аппроксимацию объектов в трехмерном пространстве с помощью отрезков прямых и плоских многоугольников. При этом отрезки прямых после перспективного преобразования переходят в отрезки прямых на проекционной плоскости. Доказательство этого достаточно простое и здесь не приводится. Это важное свойство центральной перспективы позволяет проецировать, т.е. производить вычисления только для конечных точек отрезков, а затем соединять проекции точек линиями уже на проекционной плоскости.

Рис. 19. Вывод формул центральной перспективной проекции.

Точка проецируется на экран как. Расстояние от наблюдателя до проекционной плоскости равноk. Необходимо определить координаты точки на экране. Обозначим ихи. Из подобия треугольниковинаходим, что

(1)

аналогично для x: .

Напомним, что k -это расстояние, а наблюдатель находится в точке .

Если точку наблюдения поместить в начало координат, а проекционную плоскость на расстояние , как показано на рисунке 20, то формулы дляи примут вид:

, (2)

Рассмотрим проекцию любой точки на плоскость x,y. Для этого рассмотрим вид в плоскости x=0 и y=0.

Запишем уравнение прямой

y=-lsina/1*z + yp => yp=y + lsina*z/1

x=-lcosa/1*z + xp => xp=x+lcosa*z/1

Для военной проекции l=1, для кабинетной l=0,5

3. Составить алгоритм поиска экстремума функции двух переменных методом случайного поиска.

F(x1 , x2)=x21 - x22 + x1x2

Метод случайного поиска заключается в прямой выборке из заданного интервала значений переменных с некоторой вероятностью

Где D – интервал поиска, а r – величина, равномерно распределенная в интервале от 0 до 1, или от -0,5 до 0,5.

После проверки точки на допустимость (попадание в интервал D) , вычисляется значение целевой функции в ней, если оно лучше предыдущего значения , то точка запоминается, иначе отбрасывается. Алгоритм работает указанное число итераций или пока не кончится машинное время.

1 Ввод функции f(x1,x2)

2 Ввод интервала D : а- левая граница, b – правая.

3 Ввод количества переменных N=2.

4 Ввод точности вычислений .

5 Ввод начальной точки

6 Ввод числа итераций E.

7 Для j от 1 до Е //основной цикл, пока не кончатся итерации

Начало цикла

8 flag=0; min=1; // по умолчанию делаем минимум =1

9 для i от 1 до N

начало цикла

10. rand= Random((1-0.001)+0.001);

11. // расчет новой точки X1

конец цикла

12. для i от 1 до N

начало цикла

13. Если x1i <а или x1i >b то flag=1; //проверка новой X1 на //принадлежность к интервалу

Конец цикла

14. Если flag=0 и f(X1)<min то X=X1 и min= f(X1)// если найденная точка X1 лучше предыдущей , то запоминаем её

Конец цикла

15. Вывод min и X(x1, x2).