МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГБОУ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Институт математики и компьютерных наук
Кафедра программного обеспечения
ОТЧЕТ
ПО ПРЕДДИПЛОМНОЙ ПРАКТИКЕ
Место прохождения практики ООО "ЭрТэИ Лаб"
Выполнил студент 384-2 группы
Ушков Григорий
Руководитель от ТюмГУ
к.ф.-м.н., доцент
_________ Ступников А. А.
Руководитель от предприятия
К.т.н., директор
_________ Кугаевских А.В.
Оглавление
Оглавление
Введение
Раздел I. Постановка задачи
Деятельность предприятия
Постановка задачи
Раздел II. Решение поставленной задачи
Инструментальные средства и технологии
Реализация
Заключение
Список использованных источников
Введение
В настоящее время все большую актуальность приобретает оборудование, оснащенное мультитач - дисплеями. Местом прохождения практики была выбрана IT компания «RTI - Lab» , занимающаяся созданием мультитач столов и ПО для них.
Мультитач или сенсорные столы - это новый продукт на российском рынке, но, тем не менее, данное оборудование уже зарекомендовало себя как очень интересное бизнес-решение для компаний, занимающихся продажей товаров и услуг. Данные столы можно использовать для различных целей. Таких как:
.Развлечения (игры, интернет - серфинг и т.д.);
.Проведение презентаций;
.Работа с мультимедиа (просмотр фото, видео) и т.д.
Сенсорные столы, создаваемые компанией «RTI - Lab», в большой степени используются, как демонстрационные стенды. Например, для студий дизайна интерьера: с помощью такого стола вы сможете без чьей-либо помощи ознакомиться с работами того или иного дизайнера, а также во всех подробностях изучить, понравившийся вам интерьер. Но разработка подобного ПО, учитывая все потребности клиента, может занять до 2-х месяцев. Исходя из этого, мне была предложена в качестве задачи на преддипломную практику разработка шаблонов виртуальных галерей, при помощи которых можно было бы создавать интересные презентации в короткие сроки.
Раздел I. Постановка задачи
Деятельность предприятия
ООО «ЭрТэИЛаб» - это частная лаборатория инновационных технологических исследований и разработок.
Основной деятельностью компании является создание интерактивных мультитач-ориентированных решений в бизнесе. Помимо этого развиваются направления разработки веб-сервисов и специализированных информационных систем.
Разрабатываемые интерактивные решения находят применение в научных центрах, магазинах, музеях, ресторанах, салонах недвижимости, автосалонах, образовательных учреждениях, крупных торгово-развлекательных центрах, сфере грузовых и пассажирских перевозок, корпоративных центрах и банках.
Организационная структура места прохождения практики представлена на рисунке 1.
Направление веб-разработки открыто для создания и сопровождения ряда специализированных веб-сервисов для корпоративных клиентов.
В рамках разработки информационных систем в сферу деятельности соответствующего отдела включены разработка систем автоматизации бизнес-процессов, систем поддержки принятия решений и экспертных систем.
Отдел разработки интерактивных решений
В рамках этого направления предлагается результат симбиоза IT-технологий и элементов интерьера - интерактивный мультитач стол.
Область применения разрабатываемых продуктов разнообразна, от оформления выставочных стендов и презентаций рекламной информации до комплексных решений для точек продаж и интеграции в бизнес-процессы заказчика.
Рис.1 Организационная структура «ЭрТэИЛаб»
Так же в данной сфере деятельности направления предлагается разработка специализированного программного обеспечения, ориентированного в большей степени на мультитач-технологии.
Компания способна предложить комплекс работ по автоматизации деятельности предприятия, который включает в себя:
·профессиональную подготовку технического задания;
·анализ бизнес-процессов предприятия для определения объекта автоматизации;
·анализ предметной области, подготовка соответствующей документации и моделей (диаграмма потоков данных DFD, описание процессов в нотации ARIS, модели UML);
·проектирование базы данных, в рамках чего реализуются концептуальная, логическая и физическая модели данных (СУБД выбирается в зависимости от решаемой задачи);
·разработка автоматизированной информационной системы (средство разработки выбирается в зависимости от решаемой задачи).
Постановка задачи
Основной целью преддипломной практики являлось овладение навыками программирования и реализации программного продукта. Для этого мне было предложено реализовать несколько шаблонов виртуальных галерей, для демонстрации товаров и услуг клиентов компании.
Актуальность данной темы заключается в желании компании иметь возможность работать со срочными заказами. Например: клиент приходит в компанию и просит разработать для него галерею, при помощи которой он мог бы продемонстрировать свой товар на одном из мультитач - столов. Но срок выполнения 1-2 дня. Разработка подобного инструмента позволила бы увеличить клиентскую базу компании, а, следовательно, и ее прибыль.
Итак, нужно было разработать приложение, позволяющее создать галерею по шаблону. Приложение должно иметь:
·Набор шаблонов галерей;
·Форму с настройками (размеры фотографий, фоновое изображение, скорость анимации);
Итоговое приложение должно работать по следующей схеме:
·Загрузить фотографии для галереи
·Выбрать шаблон галереи
·Произвести необходимые настройки на соответствующей форме
Раздел II. Решение поставленной задачи
Инструментальные средства и технологии
Платформа разработки выбиралась из расчета, что приложение пишется под сенсорные экраны. Была выбрана платформа Windows Presentation Foundation от Microsoft, т. к. она поддерживает обработку событий Touch(косание).Presentation Foundation (WPF) представляет собой обширный API-интерфейс для создания настольных графических программ имеющих насыщенный дизайн и интерактивность. WPF использует новую модель построения пользовательских приложений (в основе WPF лежит мощная инфраструктура, основанная на DirectX).[1]
Преимущества WPF, как языка программирования, для данной работы:
.Платформа WPF включает знакомые стандартные элементы управления, она рисует каждый текст, контур и фон самостоятельно. Так же можно изменить стиль обычных элементов управления, таких как кнопки, часто даже без написания кода.
.Вместо рисования пикселей в WPF вы имеете дело с примитивами - базовыми фигурами, блоками текста и прочими графическими ингредиентами. Кроме того, доступны такие новые средства, как действительно прозрачные элементы управления, возможность укладывания друг на друга множества уровней с разной степенью прозрачности, а также встроенная поддержка трехмерной графики.
.В WPF нет необходимости использовать таймер для того, чтобы заставить форму перерисовать себя. Вместо этого доступна анимация - неотъемлемая часть платформы. Анимация определяется декларативными дескрипторами, и WPF запускает ее в действие автоматически.
.Прежние инструментальные наборы для построения пользовательских интерфейсов, такие как Windows Forms, были весьма ограничены в работе с мультимедиа. Однако WPF включает поддержку воспроизведения любого аудио или видеофайла, поддерживаемого проигрывателем Windows Media, позволяя воспроизводить более одного медиафайла одновременно.
Несомненно, работа с анимацией является главным преимуществом WPF. В настоящее время в WPF используется три подхода к анимации: линейная интерполяция (изменение свойства последовательно от начального значения, до конечного), анимация ключевого кадра (произвольно изменяет свойство от одного значения к другому), анимация на основе пути (модифицирует значение в соответствии с фигурой, описанной в объекте PathGeometry, и в первую очередь применяется для перемещения элемента по некоторому пути).
Каждый объект PathGeometry строится на основе одного или более объектов PathFigure.
Класс PathFigure имеет 4 ключевых свойства:
·StartPoint - точка начала первой линии фигуры.
·Segments - коллекция объектов PathSegments, используемых для рисования фигуры.
·IsClosed - если true, то фигура замкнутая (добавляется отрезок прямой, соединяющий начальную и конечную точку фигуры).
·IsField - если true, то фигура закрашена.
PathFigure - это фигура, которая рисуется непрерывной линией, состоящая из ряда сегментов. Существует несколько типов сегментов, при построении фигуры можно использовать разные типы сегментов.
1.LineSegment - создает отрезок прямой линии между двумя точками.
2.ArcSegment - создает эллиптическую дугу между двумя точками.
3.BezierSegment - создает кривую Безье между двумя точками.
4.QuadraticBezierSegment - создает упрощенную форму кривой Безье, имеющую одну опорную точку вместо двух.
5.PolyLineSegment - создает серию прямых линий.
6.PolyBezierSegment - создает серию кривых Безье.
7.PolyQuadraticBezierSegment - создает серию упрощенных кривых Безье.
Для дуги, в отличие от прямой, необходимо помимо точки окончания, задать размеры эллипса. Это делается через свойство ArcSegment.Size, которое принимает значения X и Y эллипса.
Но даже при наличии начальной и конечной точек, а также размеров эллипса, информации для однозначного рисования дуги все еще не достаточно. Ведь если отметить две точки на эллипсе, соединить их можно бдвумя способами - проходя по эллипсу по короткой или длинной стороне. Установка направления осуществляется с помощью свойства ArcSegment.IsLargeArc. По умолчанию выбрано значение false, означающее выбор кротчайшей из двух дуг.
Кривые Безье
Кривые Безье соединяют два сегмента линии, используя значения начальнй и конечной точек, а также две опорные точки. Степень кривизны определяется расстоянием до этих точек.
Реализация
Рассмотрим реализацию шаблонов на примере одного из них:
В первую очередь добавим XML-файл gallery.xml. XAML представляет собой язык разметки, используемый для создания экземпляров объектов .NET. Хотя язык XAML - это технология, которая может быть применима ко многим предметным областям, его главное назначение - конструирование пользовательских интерфейсов WPF. Другими словами, документы XAML определяют расположение панелей, кнопок и прочих элементов управления, составляющих окна в приложении WPF.
Структура файла gallery.xml выглядит так:
Images/Chrysanthemum.jpg
Хризантема
98
.....
В тэге Source задается путь к картинке, в Description ее описание, в тэге Rotation - угол, на который будем поворачивать картинку.
В качестве каркаса для данной галереи будет использоваться элемент ListBox, шаблон которого мы и будем изменять. Для начала изменяет стандартный внутренний контейнер элемента ListBoxItem. По умолчанию используется (как и в большинстве других элементов) ScrollViewer, нам же нужен Grid.
Затем создаем сам шаблон ListBoxItem. В данном шаблоне создается структура самой галереи:
Элемент Border с Name="Bd" - основной каркас галереи. Обратите внимание, что в свойстве RenderTransform задается трансформация RotateTransform
Внутри этого элемента Border создается элемент Grid, содержащий две строки (указано в коллекции Grid.RowDefinitions). В первой строке содержится само изображение (элемент Image), кнопка "Закрыть" (элемент Button c Name="closeButton") и скрытое поле, содержащее обработчик события Loaded, используемое для синхронизации анимации.
Во второй строке находится текстовая надпись, содержащая описание картинки. Обратите внимание, что в свойстве RenderTransform данного элемента TextBlock содержится трансформация TranslateTransform. Она используется в анимации.
…
После структуры самой галереи идут триггеры запускающие анимации.
Первый триггер проверяет свойство IsMouseOver и запускает две анимации - DoubleAnimation (при наведении на картинку надпись немного смещается) и ColorAnimation (при наведении на картинку цвет надписи также меняется на голубой). После того как пользователь отвел мышку с картинки запускаются две обратные анимации, возвращающие текстовые элементы в исходное состояние.
Второй триггер проверяет свойство IsSelected. Сначала он устанавливает видимым кнопку closeButton. Затем меняет свойство Panel.ZIndex на 1, чтобы выбираемый элемент ListBoxItem оказался поверх других. И наконец запускает анимации, первые две из которых изменяют размеры контейнера, увеличивая его при открытии картинки, третья изменяет угол трансформации контейнера, в результате чего создается красивая анимация разворачивания картинки, а четвертая и пятая анимация устанавливают контейнер по центру экрана.
В итоге получим следующую галерею:
При помощи страницы настроек можно изменять такие значения как:
·Начальные размеры изображений;
·Конечные размеры изображений;
·Координаты точки вокруг которой крутится «веер»;
·Угол поворота изображения.
Так же помимо, приведенного выше, шаблона были разработаны следующие вариации:
1.«Колесо обозрения» - особенностью данного шаблона является использование анимации на основе пути. Это значит, что, загруженные фотографии, двигаются по заданной траектории (в данном случае окружности).
.«Линия» - особенностью является возможность смены расположения загруженных фотографий с горизонтального на вертикальное.
3.«Плитка» - особенностью данного шаблона является возможность перелистывать загруженные фотографии, что в свою очередь позволяет загружать любое кол-во фотографий, не повлияв на графическое изображение.
Подготовка дипломного проекта
В ходе преддипломной практики, параллельно с основным заданием, велась разработка дипломного проекта.
Были изучены следующие методы градиентной оптимизации:
·Метод сопряженных градиентов
·Метод Ньютона
·Квазиньютоновский метод
Метод сопряженных градиентов
Основной принцип метода - организация поиска вдоль сопряженных направлений, используя квадратичную аппроксимацию целевой функции и значение градиента.
Операции аргумента проводятся по формуле:
x(k + 1) = x(k) + a(k)s(x(k)).
Направление поиска на каждом шаге определяется с помощью формулы Флетчера-Ривса:
s(k) = -g(k) + s(k - 1), где g(k) - градиент.
Направление s(k) будет сопряжено со всеми ранее построенными направлениями поиска.
Если функция f(x1, x2, ... , xN) квадратична, то для нахождения точки экстремума требуется определить N-1 таких направлений и провести поиски вдоль каждой прямой. Если f(x) не является квадратичной, то количество поисков возрастет.
Метод Ньютона
Данный метод использует информацию о производных высших (в нашем случае - второго) порядков целевой функции. Эта информация появляется при квадратичной аппроксимации целевой функции, когда при её разложении в ряд Тейлора учитываются члены ряда до второго порядка включительно. Вычисления производятся по формуле:
где - матрица Гессе, а - градиент.
Матрица Гессе вычисляется по формуле:
В случае, когда матрица Гессе положительно определена, то направление поиска по методу Ньютона оказывается направлением спуска.
Квазиньютоновский метод
Данный метод обладает положительными чертами метода Ньютона, однако, использует информацию только о первых производных. Приближение к очередной точке задается формулой:
x(k+1) = x(k) + a(k)s(k)
Направление поиска определяется как
(k) = -A(k)Ѧ(х(k))
где A(k) - матрица порядка N´N (метрика), вычисляющаяся по формуле Девидона-Флетчера-Пауэлла:
A(k) = A(k-1) +Ac(k-1)
где
Ac(k-1) =
Dg(k) = g(k) - g(k-1) - изменение градиента,
Dx(k) = x(k) - x(k-1) - изменение аргумента.
Матрицу A(0) удобно выбирать единичной.
Руководство пользователя
Рис.1 Главная страница
На главной странице, перед тем как произвести вычисления, пользователю предлагается выбрать одну из трех реализованных функций.
Затем пользователю предлагается выбрать один из двух методов реализованных в данной программе. Также предлагается ввести начальные координаты (точка x0) и свободные коэффициенты, если это необходимо, в случае если свободных коэффициентов нет, поля ввода становятся недоступными (рис. 2).
Рис.2 Главная страница для функции без свободных коэффициентов
При нажатии кнопки «Выполнить» производится пошаговый расчет для выбранного метода. Результаты вычислений на каждом шаге выводятся в dataGridView (рис.3). В котором первый столбец показывает номер итерации, второй и третий столбцы это координаты градиента функции на конкретной итерации (g[i].x1,g[i].x2), четвертый и пятый столбцы отображают координаты направления поиска (s[i].x1,s[i].x2), шестой столбец выводит вспомогательный коэффициент alpha, последние два столбца, это координаты искомой точки на каждой итерации.
Рис.3 Вычисления для метода сопряженных градиентов
В случае с квазиньютоновским методом помимо основных значений которые выводятся в dataGridView2, в dataGridView3 выводятся значения метрики используемые для вычислений (рис.4). В котором каждый из столбцов отвечает за один из коэффициентов матрицы A:
Рис.4 Вычисления для квазиньютоновского метода
Заключение
В ходе практики были разработаны и внедрены шаблоны галерей. Так же были получены следующие навыки и опыт:
·Опыт работы как будущего специалиста в сфере информационных технологий
·Опыт программирования на платформе Windows Presentation Foundation.
Были изучены технологии создания анимации на платформе Windows Presentation Foundation. А именно анимация на основе пути, в основе которой лежит траектория движения, задаваемая объекту.
Так же было рассмотрен и использован язык разметки XAML, как наиболее удобный для перспективы развития проекта (так как легко интегрируется в другие программы, например для дизайна).
Данный проект, может быть использован клиентами фирмы для демонстрации их услуг. В дальнейшем в проект может быть добавлено:
.Использование в качестве используемого материала не только фото, но и видео.
.Разработка новых шаблонов, используя услуги профессионального дизайнера.
.Плавный переход между шаблонами в ходе презентации.
.
Список использованных источников
1.Электронный учебник программирования на .net
.Статья «Введение в WPF»
.Статья «Введение в возможности 3D на WPF»