- •1. Описание объекта и получение геометрической модели.
- •2. Геометрические преобразования.
- •3. Проецирование.
- •1. Параллельные проекции.
- •Прямоугольные проекции.
- •1.2. Косоугольные проекции.
- •2. Центральные проекции.
- •4. Удаление невидимых линий.
- •5. Закраска изображения с учетом освещения.
- •6. Разработка интерфейса программы.
2. Центральные проекции.
Основное свойство — более удаленные предметы изображаются в меньших масштабах.
Рис.5. Пример центральной проекции.
Параллельные прямые в общем случае на изображении не параллельны. Если совокупность прямых параллельна одной из главных координатных осей, то их точка схода называется главной точкой схода. Имеется 3 такие точки. Перспективное изображение зависит от положения глаза. Эффект перспективы обратно пропорционален расстоянию между глазом и объектом. Если глаз находится близко от объекта, то получается сильный эффект перспективы (хорошо видны точка схода, линии явно не параллельны). Если глаз расположен далеко, то параллельные линии объекта будут казаться параллельными и на картинке.
Если проекционная плоскость перпендикулярна оси Z, то лишь на этой оси будет лежать главная точка схода. Центральные проекции классифицируется в зависимости от числа главных точек схода, которыми они обладают.
с одной точкой схода:
Рис.6. Центральная проекция с одной точкой схода
с двумя точками схода:
Рис.7. Центральная проекция с двумя точками схода
с тремя точками схода:
Рис.8. Центральная проекция с тремя точками схода
Для проецирования модели на плоскость необходимо преобразовать каждую точку объекта. Так же как и для геометрических преобразований, проецирование сводится к перемножению матриц точек модели на матрицы соответствующих проекций.
Таким образом, каждая точка модели преобразуется с помощью оператора P.
.
Рассмотрим математическое описание проекций, которые я использовала в своем курсовом проекте:
Фронтальная проекция:
Чтобы получить точки фронтальной проекции я перемножаю матрицу каждой точки данного изображения на матрицу Mf. Для перемножения использую функцию Multiply(), которая описана выше (п.2).
P = TMf, где
Рис.9. Фронтальная проекция.
Горизонтальная проекция:
Аналогично, чтобы получить точки горизонтальной проекции я перемножаю матрицу каждой точки данного изображения на матрицу Mg. Также для перемножения использую функцию Multiply(), которая описана выше (п.2).
P = TMg, где
Рис.10. Горизонтальная проекция.
Профильная проекция:
Чтобы получить точки профильной проекции я перемножаю матрицу каждой точки данного изображения на матрицу Mp. Для перемножения использую функцию Multiply(), которая описана выше (п.2).
P = TMp, где
Рис.11. Профильная проекция.
Перспективная проекция:
Чтобы получить точки перспективной проекции я перемножаю матрицу каждой точки данного изображения на матрицу Mpr. Также для перемножения использую функцию Multiply(), которая описана выше (п.2).
P = TMpr, где
d – расстояние от картинной плоскости до наблюдателя.
В результате перемножения последний элемент матрицы значений координат новой точки объекта не равен 1. Поэтому я делю на значение этого элемента, чтобы результат перспективы был правильным.
Рис.12. Перспективная проекция.
Видовое преобразование:
Для видового преобразования я перемножаю матрицу каждой точки данного изображения на матрицу Mpr(видоизмененная с учетом , , ). Для перемножения использую функцию Multiply(), которая описана выше (п.2).
P = TMpr, где
– угол поворота относительно оси OZ.
– угол поворота относительно оси OX.
– расстояние от центра системы координат к точке центра объекта.
Чем больше расстояние , тем дальше кажется расположен объект и наоборот.
Аксонометрическая проекция:
Чтобы получить точки аксонометрической проекции я перемножаю матрицу каждой точки данного изображения на матрицу Mas. Для перемножения использую функцию Multiply(), которая описана выше (п.2).
P = TMas, где
– угол поворота относительно оси OY.
– угол поворота относительно оси OX.
Рис.13. Аксонометрическая проекция.
Косоугольная проекция:
Чтобы получить точки косоугольной проекции я перемножаю матрицу каждой точки данного изображения на матрицу Mks. Для перемножения использую функцию Multiply(), которая описана выше (п.2).
P = TMks, где
Матрица приводит к сдвигу и последующему проецированию объекта, с постоянной Z=Z1 перенос в направлении X на ZLcos и в параллельном направлении Y на ZLsin с последующем проецированием на плоскость с Z=0.
Рис.13. Косоугольная проекция.
Для косоугольной изометрии угол =450, для косоугольной диметрии угол =63,40.