Помощь в написании студенческих работ
Антистрессовый сервис

Разработка системы классов для представления карт и атласов гладких многообразий

Курсовая Купить готовую Узнать стоимостьмоей работы

A dd (args); }publicCommonSet () { }//Добавитьэлементpublicvoid Add (objectelem) {List.Add (elem); }//Удалениеэлементаpublicvoid Delete (objectelem) {List.Remove (elem); }//ПересечениеpublicCommonSet Intersect (CommonSet Source) {ArrayList result = newArrayList ();foreach (objectobjin List) {foreach (object obj1 inSource. List){if (obj.Equals (obj1))result.Add (obj); } }CommonSet res_… Читать ещё >

Разработка системы классов для представления карт и атласов гладких многообразий (реферат, курсовая, диплом, контрольная)

Содержание

  • ВВЕДЕНИЕ
  • ПРЕДСТАВЛЕНИЕ ТОПОЛОГИЧЕСКИХ ПРОСТРАНСТВ И МНОГООБРАЗИЙ
    • 1. 1. Понятие топологического пространства. Понятие многообразия
  • 2. РАЗРАБОТКА СИСТЕМЫ КЛАССОВ ДЛЯ ПРЕДСТАВЛЕНИЯ КАРТ И АТЛАСОВ ГЛАДКИХ МНОГООБРАЗИЙ
    • 2. 1. Выбор технологий и инструментов реализации задачи
    • 2. 2. Программная реализация библиотеки классов
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

A dd (args); }publicCommonSet () { }//Добавитьэлементpublicvoid Add (objectelem) {List.Add (elem); }//Удалениеэлементаpublicvoid Delete (objectelem) {List.Remove (elem); }//ПересечениеpublicCommonSet Intersect (CommonSet Source) {ArrayList result = newArrayList ();foreach (objectobjin List) {foreach (object obj1 inSource. List){if (obj.Equals (obj1))result.Add (obj); } }CommonSet res_ = newCommonSet (); res_.List.AddRange (result);if (res_.List.Count ≠ 0) return res_;elsereturnnull; }//ОбъединениеpublicCommonSet Union (CommonSet Source) {CommonSet res_ = newCommonSet (); res_.List.AddRange (List); res_.List.AddRange (Source.List);return res_; }//РазностьмножествpublicCommonSet Except (CommonSet Source) {CommonSet res_ = newCommonSet ();foreach (objectobjin List) {boolval = true;foreach (object obj1 inSource. List) {val = val && !obj.Equals (obj1); }if (val)res_.Add (obj); }return res_; }//СтроковыйвыводpublicoverridestringToString (){returnstring.Join («,», List); } }Множество реализована как списочная структура, позволяющая хранить объекты произвольной природы. Основные теоретико-множественные операции реализованы через перебор элементов списка. Такой подход делает представление множеств достаточно универсальным без использования явной параметризации. Ниже приведена реализация класса карты Card. publicclassCard {//ОтображениеpublicICommonFuncFunc;//МножествоpublicCommonSet Set;publicICommonFuncICommonFunc {get {thrownewSystem.NotImplementedException (); }set { } }//ПересекаютсякартыилинетpublicboolIsIntersects (Card card) {varobj=card.Set.Intersect (Set);return (obj ≠ null); }publicCommonSet Run () {CommonSet result = newCommonSet ();List<double[]> res_fun = Func. Fun (Set);foreach (double[] valinres_fun)result.List.Add (val);return result;} }}В качестве полей карта содержит множество и гомеоморфное отображение, заданное Основными операциями, реализованными в карты, является проверка наличие пересечения с другой картой, что может быть необходимо при дальнейшем использовании. Также реализован расчет отображения в методе Run. Следующим по уровню абстракции является класcAtlas.

Его реализация приведена ниже//АтласpublicclassAtlas:Card{//СписоккартатласаList<Card> cards = newList<Card>();publicList<Card> Cards {get {return cards; }set {cards = value; } }//ДобавлениекартыpublicvoidAddCard (Card card) {card.Func = Func;Cards.Add (card); }//Удалениекартыpublicvoid Remove (Card card){Cards.Remove (card); } }Класс Atlasявляется высокоуровневой абстракцией, играющей роль контейнера по отношению к картам. В нем реализовано добавление и удаление карт. При этом при добавлении карт в Atlasсоответствующей карте задается отображение, одинаковое для всех карт. Это отвечает требованиям к построению атласа. Набор этих данных описывает гладкое многообразие на разных уровнях его представления.

В качестве отображения реализован интерфейсный класс ICommonFunction, реализация которого приведена нижеpublicabstractclassICommonFunc {//R^nмоделируеммассивом. Таким образом, Fun переводит множество в массивpublicabstractList<double[]> Fun (CommonSet v);}}Как видно из кода, данный класс является абстрактным. Метод Fun реализует вычисление гомеоморфизма, применяя его к множеству, заданному в качестве параметра. На выходе возвращается список значений результатов вычислений. Сам результат моделируется одномерным массивом, что отвечает концепции векторной структуры элементов пространства. Реализованное приложение выполнено как драйвер, показывающий возможности разработанной библиотеки классов. После запуска приложения в его окне появляются результаты, отвечающие отображению сферических координат в декартовы. Ниже приведен код логики визуализации отображений. voidDraw () {//Параметры OpenGLGl. glClear (Gl.GL_COLOR_BUFFER_BIT — Gl. GL_DEPTH_BUFFER_BIT);Gl.glLoadIdentity ();Gl.glPushMatrix ();Gl.glTranslated (0, 0, -10);Gl.glRotated (45, 1, 1, 0);//Задаем множество//Дапазоны границdouble[,] Min_ = newdouble[,] { { 1, 0, 0 }, { 0.5, Math. PI*0.25, 0 } };double[,] Max_ = newdouble[,] { { 1, 2*Math.PI, 2*Math.PI }, { 0.5, Math. PI * 0.5, Math. PI } };//Шагпонаправлениямdouble[,] Step_ = newdouble[,] { { 0.5, 0.01* Math. PI, 0.01* Math. PI }, { 1, 0.02* Math. PI, 0.02* Math. PI } };Atlasatl_ = newAtlas ();for (inti=0;i<Min_.GetLength (0);i++) {int Size_ = Min_.GetLength (1);double[] Min = newdouble[Size_]; double[] Max = newdouble[Size_]; double[] Step = newdouble[Size_]; //Выборкадиапазоновfor (int j=0;j<Min_.GetLength (1);j++) { Min[j] = Min_[i, j]; Max[j] = Max_[i, j]; Step[j] = Step_[i, j]; }//ЗадаеммножествоCommonSet set_ = newCommonSet ();//Построение координатной сетки как множества//Задаем параметрыBuilderCoordMesh3D. Min = Min;BuilderCoordMesh3D.Max = Max;BuilderCoordMesh3D.Step = Step;//СтроимсеткуBuilderCoordMesh3D.Build ();//Добавляемееэлементывмножествоforeach (double[] point inBuilderCoordMesh3D. Points) set_.List.Add (point);Cardcard_ = newCard ();//Множество картыcard_.Set = set_;//Отображение картыatl_.Func = newSphericalFun ();//Добавление карты в атласatl_.AddCard (card_); }//ЦветаотрисовкиColor[] ColorsRes = newColor[] { Color. Green, Color. Blue };List<double[]> TranslateCoords = newList<double[]>();TranslateCoords.Add (newdouble[] { 0, 0,0 });TranslateCoords.Add (newdouble[] { 1, 1, 0 });ICommonFuncFunc_ = newTranslateFun ();int i1= 0;foreach (Cardobjinatl_.Cards) { //ОтображениекартыList<double[]> result=((SphericalFun)obj.Func).Fun (obj.Set);//РезультатотображенияCommonSet res_ = newCommonSet ();//Заполнениеданныхforeach (double[] obj_ in result) res_.List.Add (obj_);//Преобразование переноса как дополнительное отображение ((TranslateFun)Func_).Translate = TranslateCoords[i1]; result = ((TranslateFun)Func_).Fun (res_); res_.List.Clear ();//Заполнениеданныхforeach (double[] obj_ in result) res_.List.Add (obj_);//Отрисовка отображенийGraphicsDraw. Draw (res_, ColorsRes[i1]);i1++; }Gl.glPopMatrix ();Gl.glFlush ();Gl.glFinish (); }В приведенном коде на первом этапе его исполнения в качестве исходных данных задаются множества, отвечающие картам в сферических координатах. Они образуют атлас.

На втором этапе по картам атласа выполняется вычисление отображений сферических координат в декартовы. Далее к ним применяется преобразование переноса. После этого выполняется их визуализация. Результаты работы программы приведены на рисунке 3Рисунок 3. Результаты работы программы.

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

ЗАКЛЮЧЕНИЕ

В работе была разработана библиотека классов для описания и представления карт и атласов гладких многообразий. Анализ предметной области показал важность и плодотворность применений концепций топологии в математических исследованиях.

Высокий уровень абстракции ее объектов дает серьезные возможности конструирования геометрических структур, имеющих большое практическое значение. К их классу относится и гладкое многообразие. Анализ этого понятия показал его сильное теоретико-множественное значение, а также важность как фундамента для построения и реализации систем координат различного вида. Структурными элементами гладкого многообразия являются карты и атласы, обладающие рядом важных свойств. С целью исследования возможности программного моделирования топологических объектов была разработана система классов, целью которой являлось описание и программная реализация карт и атласов гладких многообразий с возможностью их визуального представления. В качестве языка программирования был выбран язык C# на базе платформы.NETFramework. Графическим движком, на базе которого выполнялась визуализация, служила библиотека OpenGL, обладающая широкими возможностями визуализации объектов высокой сложности. Разработанное приложение для демонстрации возможностей библиотеки подтвердило корректность ее работы и заявленный функционал.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Фоменко А. Т. Дифференциальная геометрия и топология.

Дополнительные главы. — Ижевск: Ижевская республиканская типография. 1999. — 252 с.В. А.

Рохлин, Д. Б. Фукс. Начальный курс топологии. Геометрические главы. М.; Наука, 1977. 488 с.

• Дубровин В. А. Римановы поверхности и нелинейные уравнения. — Ижевск: НИЦ «Регулярная и хаотическая динамика», 2001, 152 стр. Голованов Н. Н. Геометрическое моделирование: учебник для учреждений высш.

проф. образования / Н. Н. Голованов. — М.: Издательский центр «Академия», 2011.

— 272 с. Чарльз Петцольд Программирование с использованием MicrosoftWindowsForms. — Издательство: Русская Редакция, Питер 2006 г. Рихтер Дж. CLR viaC#. Программирование на платформе Microsoft. NETFramework 4.0 на языке C#, 3-е издание. Питер, 2012 г. -.

928 с. Соснин, Н. В. Компьютерная графика. Математические основы. Версия 1.0 [Электронный ресурс]: электрон.

учеб. пособие / Н. В. Соснин. — Электрон.

дан. (4 Мб). — Красноярск: ИПК СФУ, 2008.

Баяковский Ю.М., Игнатенко А. В., Фролов А. И. Графическая библиотека OpenGL. Учебно-методическое пособие. Издательский отдел факультета Вычислительной Математики и Кибернетики МГУ им. Ломоносова (лицензия НД № 5 899 от 24.

09.2001), 2003 г. — 132 с. Куприянов Д. Ю. Иcпользование библиотеки OpenGL. Моделирование трёхмерной сцены: учебное пособие по дисциплине «Компьютерная графика». — М.: МГИУ, 2012. — 62 c.

http://esate.ru/uroki/OpenGL/uroki-OpenGL-c-sharp/chto-takoe-tao-framework/.

Показать весь текст

Список литературы

  1. А. Т. Дифференциальная геометрия и топология. Дополнительные главы. — Ижевск: Ижевская республиканская типография. 1999. — 252 с.
  2. В. А. Рохлин, Д. Б. Фукс. Начальный курс топологии. Геометрические главы. М.; Наука, 1977.- 488 с.
  3. •Дубровин В. А. Римановы поверхности и нелинейные уравнения. — Ижевск: НИЦ «Регулярная и хаотическая динамика», 2001, 152 стр.
  4. Н. Н. Геометрическое моделирование : учебник для учреждений высш. проф. образования / Н. Н. Голованов. — М.: Издательский центр «Академия», 2011. — 272 с.
  5. Чарльз Петцольд Программирование с использованием Microsoft Windows Forms. — Издательство: Русская Редакция, Питер 2006 г.
  6. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#, 3-е издание. Питер, 2012 г. — 928 с.
  7. , Н. В. Компьютерная графика. Математические основы. Версия 1.0 [Электронный ресурс]: электрон. учеб. пособие / Н. В. Соснин. — Электрон. дан. (4 Мб). — Красноярск: ИПК СФУ, 2008.
  8. Ю.М., Игнатенко А. В., Фролов А. И. Графическая библиотека OpenGL. Учебно-методическое пособие. Издательский отдел факультета Вычислительной Математики и Кибернетики МГУ им. Ломоносова (лицензия НД № 5 899 от 24.09.2001), 2003 г. — 132 с.
  9. Д.Ю. Иcпользование библиотеки OpenGL. Моделирование трёхмерной сцены: учебное пособие по дисциплине «Компьютерная графика». — М.: МГИУ, 2012. — 62 c.
  10. http://esate.ru/uroki/OpenGL/uroki-OpenGL-c-sharp/chto-takoe-tao-framework/
Заполнить форму текущей работой
Купить готовую работу

ИЛИ