АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Перспективные преобразования

Читайте также:
  1. Перспективные и обреченные проекты.
  2. Перспективные показатели
  3. Перспективные способы передачи электроэнергии.
  4. Хрущевская оттепель: экономические реформы, административные преобразования.

Проецирование-отображение трехмерного объекта на двухмерную плоскость. Перспективное преобразование имеет место, когда не равен нулю любой из первых трех элементов четвертого столбца обобщенной (4 х 4) - матрицы преобразования однородных координат. Центральная проекция - это проекция, которая образуется с помощью проецирующихся лучей, проходящих через одну точку. Параллельная проекция -проецирующие прямые идут параллельным пучком до пересечения с картинной плоскостью. Z-буфер. Обычный буфер кадра хранит коды цвета для каждого пиксела в пространстве изображения. Идея алгоритма состоит в том, чтобы для каждого пиксела дополнительно хранить еще и координату Z или глубину. При занесении очередного пиксела в буфер кадра значение его Z-координаты сравнивается с Z-координатой пиксела, который уже находится в буфере. Если Z-координата нового пиксела больше, чем координата старого, т.е. он ближе к наблюдателю, то атрибуты нового пиксела и его Z-координата заносятся в буфер, если нет, то ни чего не делается. Модель освещения это математическое представление физических свойств источников света и поверхностей, а также их взаимного расположения. Закраска методом Гуро. Его метод заключается в том, что используются не нормали к плоским граням, а нормали к аппроксимируемой поверхности, построенные в вершинах многогранника. После этого вычисляются интенсивности в вершинах, а затем во всех внутренних точках многоугольника выполняется билинейная интерполяция интенсивности. Метод Фонга. Он предложил вместо интерполяции интенсивностей произвести интерполяцию вектора нормали к поверхности на сканирующей строке. Этот метод требует больших вычислительных затрат, поскольку формулы интерполяции применяются к трем компонентам вектора нормали, но зато дает лучшую аппроксимацию кривизны поверхности. Поэтому зеркальные свойства поверхности воспроизводятся гораздо лучше. Нормали к поверхности в вершинах многогранника вычисляются так же, как и в методе Гуро. А затем выполняется билинейная интерполяция в сочетании с построчным сканированием. После построения вектора нормали в очередной точке вычисляется интенсивность.


 

35. Изложите основные принципы концепции SOLID используемые при дизайне классов в объектно-ориентированном проектировании

SOLID это аббревиатура пяти основных принципов дизайна классов в объектно-ориентированном проектировании которые облегчают работу программиста.

Single responsibility principle (принцип единственной обязанности) - обозначает, что каждый объект должен иметь одну обязанность и иметь одну и только одну причину измениться. Все его сервисы должны быть направлены исключительно на обеспечение этой обязанности.
Мотивация использования: Отсутствие ведёт к хрупкости дизайна (при изменении одного функционала отваливается другой)

Пример: Модуль, который может и производить манипуляции с картинкой (изменять размер/поворачивать и т.п.), и выводить её на экран не отвечает принципу SRP, так как отвечает за две обязанности: модификация картинки и её вывод на экран.

Open-closed principle (принцип открытости\закрытости) – обозначает, что программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения»
Мотивация использования: Позволяет быстро и безболезненно реагировать на изменения бизнес-логики
Пример: Есть два класса пишущих логи: один в БД второй в файл. Классы не реализуют общий интерфейс. Если сейчас используется один класс, то для замены его на второй надо менять все места его использования. Если реализовать общий интерфейс Logger и определить в нём метод log(string), то для внесения изменений будет достаточно поменять объявление объекта. (Logger logger = new FileLogger(); поменять на Logger logger = new DBLogger();). Добавили новый метод в интерфейс – все его имеют.

Liscov Substitution Principle (Принцип подстановки Барбары лИсков) – если для каждого объекта o1 типа S существует объект о2 типа T, который для всех программ P определён в терминах Т, то поведение Р не изменится, если о1 заменить на o2 при условии, что S является подтипом Т.
Мотивация использования: клиентский код начинает считать производный класс разновидностью базового, и возможно появление кода, явно использующего этот факт.
Пример: класс-родитель(тип S) описывает прямоугольник с полями: длина, ширина и методом getSquare() возвращающим площадь (длина * ширина). Класс-ребёнок описывает квадрат(тип Т) с перегруженными get\set для длины и ширины, которые устанавливают поля длина и ширина в родительском классе. Для тестирования создаём объект «прямоугольник» (o1) и объект «квадрат»(о2). Для обоих объектов вызовем методы setWidth(3) и setHeight(2). После этого вызовем метод getSquare(). Для прямоугольника метод вернёт 6, а для квадрата 4. Соответственно нельзя везде использовать объект o2 вместо о1.

Interface segregation principle (принцип изолированности интерфейса) – клиенты не должны зависеть от методов интерфейса, которые они не используют.
Мотивация использования: Если определить большой универсальный интерфейс, то в наследниках появится много методов-заглушек и много лишнего кода,который неудобно использовать.
Создаём трансформера. Делаем интерфейс IMegaTransformer с методами преобразоваться в машину,катер,самолёт. Потом делаем отдельных трансформеров каждый из которых может преобразовываться либо в машину, либо в катер, либо в самолёт. НО методы по преобразовыванию всё равно надо реализовывать. Решение – запилить три отдельных интерфейса.

Dependency Inversion Principle (принцип инверсии зависимостей):
1. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
2. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Мотивация использования: в противномслучае возникает паутина зависимостей, превращая реализацию нового изменения требований в невыполнимую задачу.
Задача избежать три компоненты:
1. Жесткость – изменение одной части кода затрагивает слишком мноого других частей.
2. Хрупкость – даже незначительное изменение в коде может привести к неожиданным проблемам
3. Неподвижность – никакая из частей приложения не может быть легко выделена и поторно использована


36. Объясните основы машинной графики.

Машинная графика – это совокупность методов и приемов для преобразования при помощи персонального компьютера данных в графическое представление или графическое представление в данные.

1. Понятие растр - это множество M, такое, что существует взаимно однозначное (биективное) отображение, где,. Если множества X и Y - конечные, то растр будем называть прямоугольным, в противном случае будем называть его бесконечным.

Особенности растровой графики состоят в том, что растровая графика основывется на пиксельном построении. Пи́ксель — наименьшая единица двухмерного цифрового изображения в растровой графике.

Кадровый буфер — реальное или виртуальное электронное устройство, или область памяти для кратковременного хранения одного или нескольких кадров в цифровом виде перед его отправкой на устройство видеовывода.

Классификация алгоритмов машинной графики – делится на 2 категории: алгоритмы нижнего уровня и алгоритмы верхнего уровня. Смысл алгоритмов состоит в генерации векторов. Назначение генератора векторов - соединение двух точек изображения отрезком прямой.

Алгоритмы нижнего уровня: реализация графических примитивов. К простым примитивам относятся следующие объекты: Точка, Отрезок, Круг, Дуга, Прямая, Луч, Эллипс, Сплайн, Текст. Наиболее распространенный алгор. для построения примитивов - Алгоритм Брезенхема. Основная идея алгоритма состоит в том, что если угловой коэффициент прямой < 1/2, то естественно точку, следующую за точкой (0,0), поставить в позицию (1,0), а если угловой коэффициент > 1/2, то - в позицию (1,1).

К сложным примитивам относятся: полилиния, мультилиния, мультитекст, размер, выноска, допуск, штриховка, вхождение блока или внешней ссылки, атрибут и растровое изображение.

Алгоритмы верхнего уровня: удаление невидимых линий и поверхностей. Отсекаемые отрезки могут быть трех классов - целиком видимые, целиком невидимые и пересекающие окно. Осн. алг. - Двумерный алгоритм Коэна-Сазерленда. Схема алгоритма следующая:

1. Рассчитать коды конечных точек отсекаемого отрезка.

В цикле повторять пункты 2-6:

2. Если логическое И кодов конечных точек не равно 0, то отрезок целиком вне окна. Он отбрасывается и отсечение закончено.

3. Если оба кода равны 0, то отрезок целиком видим. Он принимается и отсечение закончено.

4. Если начальная точка внутри окна, то она меняется местами с конечной точкой.

5. Анализируется код начальной точки для определения стороны окна с которой есть пересечение и выполняется расчет пересечения. При этом вычисленная точка пересечения заменяет начальную точку.

6. Определение нового кода начальной точки.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)