Цель работы 5
Введение 6
Постановка задачи 9
1 Основные сведения о теории сплайнов. Описание минимальных локальных полинимиальных сплайнов 10
1.1 Построение кусочно-линейных сплайнов одной переменной 10
1.2 Построение изображений поверхностей с помощью функций Куранта 11
1.3 Построение кубических сплайнов 13
1.4 Построение изображений поверхностей с помощью тензорного произвдения 14
1.5 Построение изображений в трехмерном пространстве 15
2 Обзор существующих решений 17
2.1 Приложение Linear Fit 17
2.2 Приложение Spline Interpolation 17
2.3 Curve Fit - Tools 18
2.4 Приложение Math Professional 18
2.5 Приложение Grapher Pro 18
2.6 Выводы 19
3 Программная реализация 20
3.1 Архитектура мобильного приложения 20
3.2 Программные средства, используемые для создания двухмерных поверхностей 21
3.2.1 Язык Java 22
3.2.2 Интегрированная среда разработки Android Studio 22
3.2.3 Прикладной программный интерфейс Canvas 23
3.3 Расчётная и программная часть 24
3.3.1 Класс MainActivity 24
3.3.2 Класс ShapesActivity 25
3.3.3 Класс Point3 27
3.3.4 Класс Shape 27
3.3.5 Класс Shape2D 28
3.3.6 Класс Nativ 29
3.3.7 Класс Spline 29
3.3.8 Класс TreeActivity 1 31
3.4 Полученные результаты 33
3.5 Руководство пользователя 35
Заключение 39
Список использованной литературы 40
Приложение. Тексты программ 44
Решение задачи построения поверхности в двумерном пространстве будем строить с помощью сплайн-функций. Сплайн-функция — это новая быстро развивающаяся область теории приближения функций и численного анализа. Получив распространение в 60-х годах, главным образом как средство интерполяции сложных кривых, сплайны в дальнейшем стали важным методом для решения разнообразных задач вычислительной математики и прикладной геометрии [4].
По сравнению с классическим аппаратом приближения многочленами сплайн-функции обладают по крайней мере двумя важными преимуществами. Во-первых, бесспорно,лучшими аппроксимативными свойствами и, во- вторых, удобством реализации построенных на их основе алгоритмов на ЭВМ [4].
Большинство численных методов решения задач математического анализа так или иначе связано с аппроксимацией функций. Это и собственно задачи приближения функций (интерполяция, сглаживание, наилучшие приближения) и задачи, в которых аппроксимация присутствует как промежуточный этап исследования (численное дифференцирование и интегрирование, численное решение дифференциальных и интегральных уравнений).
В алгебраическом смысле сплайны трактуются как некоторые гладкие кусочно-мпогочленные (включая обобщенные многочлены) функции с однородной структурой. Сюда относятся так называемые L — сплайны, составляемые из решений линейного однородного дифференциального уравнения LS(x) = 0. Случай кубических сплайнов соответствует L = d4=dx4[4].
В последнее время в вычислительной практике широкое распространение получили B-сплайны (от английского слова bell — колокол). Эти сплайны сосредоточены на конечном носителе. Они используются как для интерполяции функций, так и в качестве базисных функций при построении методов типа конечных элементов. Данная категория сплайнов является наиболее используемой, и функции B-сплайнов широко применяются в системах автоматизированного проектирования и многих пакетах графического программирования.
Подобно сплайнам Безье, B-сплайны генерируются путём аппроксимации набора контрольных точек. В то же время, B-сплайны обладают двумя преимуществами по сравнению со сплайнами Безье: во-первых, степень полинома B-сплайна можно задать независимо от числа контрольных точек (с определенными ограничениями); во-вторых, B-сплайны допускают локальный контроль над формой кривой. Платой за это является большая сложность B-сплайнов по сравнению со сплайнами Безье [21]. Базисные сплайны заданной степени являются линейно независимыми функциями и образуют базис в функциональных пространствах, что можно использовать для представления с их помощью других функций этих же пространств. Любая, например, кусочно-постоянная функция на отрезке, составленном из равных интервалов, может быть единственным образом представлена как линейная комбинация В-сплайнов нулевой степени, любая кусочно-линейная функция — В-сплайнов первой степени и т. д. Базисные сплайны играют существенную роль при построении численных методов решения задач математической физики, например, метода конечных элементов в теории приближения функций, при решении задач компьютерной графики.
Решение задач аппроксимации и изучение аппроксимативных свойств сплайнов при этом сводятся к исследованию линейных алгебраических систем. Вопрос об экстремальных свойствах является здесь производным в том смысле, что отыскиваются постановки вариационных задач, решениями которых были бы сплайн-функции.
Обращаясь к сплайн-функциям многих переменных, приходится признать, что если мы хотим сохранить для них выше указанные свойства, установленные для одномерных сплайнов, то неизбежно должны ограничиться функциями с клеточной структурой. Под этим мы понимаем функции, область определения которых разделена на ячейки (в плоском случае прямоугольники, треугольники и т. п., в многомерном — параллелепипеды, пирамиды и т. п.). В каждой ячейке функция определена в некотором смысле однородным способом с условиями гладкости вдоль границ ячеек. При интерполировании функций многих переменных для сплайнов, в отличие от многочленов, не возникает особых трудностей с проблемой существования и единственности решения. Опыт применения сплайн-функций как аппарата приближения функций в численном анализе показывает, что во всех известных случаях удавалось добиться ощутимых результатов по сравнению с классическим аппаратом многочленов. В одних задачах переход к сплайнам приводит к повышению точности результатов, в других — к значительному сокращению вычислительных затрат, в третьих — достигаются оба эффекта одновременно. Наконец, с помощью сплайнов удалось решить и такие задачи, которые другим путем решить было бы невозможно. Среди них на первом месте стоит проблема представления и хранения геометрической информации в самых различных областях знания, будь то естественные науки, техника, архитектура, картография. Традиционно в более или менее сложных ситуациях эта задача решается путем изображения объекта или процесса на плоскости в виде графиков, чертежей и т. п. Вследствие ограниченности масштабов изображений этот способ принципиально не может обеспечить требуемую точность во всех случаях. Применение для данных целей сплайнов (как одной, так и многих переменных) позволяет хранить геометрическую информацию в числовой форме и с любой точностью. При обработке информации на ЭВМ использование сплайнов позволяет на единой методологической основе разрабатывать математическое обеспечение средств машинной графики (графопостроители и дисплеи).
Особенно широкое применение получили сплайны в технике как аппарат для математического моделирования поверхностей деталей и агрегатов сложной формы, таких, как аэродинамические обводы летательных аппаратов, корпуса судов, лопасти гидротурбин, кузова легковых автомобилей и т. п. Такие математические модели стали необходимыми при создании систем автоматизации проектирования изделий на основе ЭВМ, технологической подготовки их производства, включая разработку программ для оборудования с цифровым программным управлением.
В ходе выполнения данной магистерской диссертации были выполнены следующие задачи:
• Исследованы возможности по применению локальных сплайнов для разработки мобильного приложения на платформе Android;
• Разработано интерактивное мобильное приложение для платформы android, позволяющее пользователю интерактивно строить триангуляцию на плоскости, задавая узлы триангуляции последовательно касаясь экрана и имея возможность изменить расположение очередного вводимого узла;
• Разработано интерактивное мобильное приложение (для android) для перемещения плоских треугольников по экрану;
• Проведен анализ работоспособности приложения.
В дальнейшем планируется оптимизировать алгоритм построения триангуляции, а также провести эксперименты с использованием других методов и способов разработки кроссплатформенного приложения.
[1] Бурова И.Г., Демьянович Ю.К. «Минимальные сплайны и их приложения». ISBN 978-5-288-04978-1, 2010, с. 364.
[2] Бурова И.Г. «Аппроксимация вещественными и комплексными минимальными сплайнами». ISBN 978-5-288-05466-2, 2013, с. 144.
[3] Демьянович Ю.К. «Локальная аппроксимация на многообразии и минимальные сплайны». ISBN 5-288-00481-1, 1994, с. 356.
[4] Завьялов Ю.С., Квасов Б.И., Мирошничен «Методы сплайн- функций». ISBN 978-5-86134-180-6, 1980, с. 352.
[5] Стечкин С.Б., Субботин Ю.Н. «Методы сплайн-функций». 1976, с. 248.
[6] Львовский С.М. «Набор и верстка в системе LaTeX ». ISBN 5-94057091-7, 2006, с. 448.
[7] Герберт Шилдт «Java: The Complete Reference, Ninth Edition ». ISBN 978-5-8459-1918-2, 2015, с. 1376.
[8] Дейтел П., Дейтел Х. «Android for Programmers: An App-Driven Approach ». ISBN 978-5-496-01517-2, 2015, с. 384.
[9] Вязовик Н.А «Программирование на Java. Курс лекций ». ISBN 5-9556- 0006-X, 2016, с. 592.
[10] Дон Гриффитс, Дэвид Гриффит «Head First. Программирование для Android ». ISBN 978-5-496-02171-5, 2016, с. 704.
[11] Timothy M. Wright «Fundamental 2D Game Programming with Java ». ISBN 978-1305076532, 2014, с. 656.
[12] Брюс Эккель «Thinking in Java (4th Edition) ». ISBN 978-5-496-01127-3, 2015, с. 1168.
[13] Баяковский Ю.М., Игнатенко А.В., Фролов А.И. «Графическая библиотека OpenGL. Учебно-методическое пособие. ». ISBN 5-89407-153-4, 2003, с. 132.
[14] Jim X.Chen, Edward J.Wegman «Foundations of 3D Graphics Programming: Using JOGL and Java3D ». ISBN 1-84628-185-7, 2006, с. 305.
[15] Давыдов С.В., Ефимов А.А. «IntelliJ IDEA. Профессиональное программирование на Java ». ISBN 5-94157-607-2, 2005, с. 800.
...