Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03





Скачать 483.19 Kb.
НазваниеОбразования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03
страница4/4
Дата публикации14.12.2014
Размер483.19 Kb.
ТипДипломная работа
100-bal.ru > Информатика > Дипломная работа
1   2   3   4

Заключение
В данной работе был реализован алгоритм построения трехмерного объекта, представленного набором треугольников, на основе пересечения двух других объектов.

Реализовано несколько вспомогательных алгоритмов, таких как: определение факта принадлежности точки полигону, попадание точки внутрь объекта, несколько функций для работы с нормалями, учитывая обход вершин по часовой стрелке, функции импорта и экспорта из 3ds-формата.

Рассмотрена работа с библиотеками классов. Разработана библиотека классов на основе полученных ранее функций и классов.

Разработан плагин для 3D Studio Max, позволяющий использовать алгоритм построения объекта, полученного в результате пересечения двух других объектов.

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


  1. Алексей Игнатенко. Геометрическое моделирование сплошных тел [Электронный ресурс]. – 2004. – Режим доступа к ресурсу: http://graphics.cs.msu.su/ru/library/3d/solid_modelling/index.html, свободный.

  2. Библиотека RTFM [Электронный ресурс]. – 2008. – режим доступа к ресурсу: http://docs.luksian.com/programming/delphi/dlldelph/ , свободный

  3. Кожухов И.Б., Прокофьев А.А. Универсальный справочник по математике. – М.: Лист Нью, Вече, 2002. – 544 с.

  4. Компьютерные вести On-line. Плагин своими руками [Электронный ресурс]. – 2007. – Режим доступа к ресурсу: http://www.kv.by/index2007331201.htm , свободный

  5. Ламот А. Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации. /Пер. с англ. – М.: Издательский дом «Вильямс», 2004. – 1424 с.

  6. Отрывок из DEMO.DESSIGN 3D programming FAQ [Электронный ресурс]. – Режим доступа к ресурсу: http://www.codenet.ru/progr/formt/3ds.php , свободный

  7. Романюк А, Сторчак А.. Алгоритмы триангуляции [Электронный ресурс]. – 2004. – Режим доступа к ресурсу: http://www.citforum.ru/programming/theory/alg_triangl/index.shtml, свободный

  8. Скворцов А.В. Триангуляция Делоне и ее применение. – Издательство ТГУ, 2002. – 127с.

  9. GameDev / Формат 3DS: Первый шаг [Электронный ресурс]. – 2005. – Режим доступа к ресурсу: http://www.gamedev.ru/articles/?id=40113&page=2, свободный

  10. GameDev / Р. Марченко. Создание Export плагина для 3D Studio Max [Электронный ресурс]. – 2005. Режим доступа к ресурсу: http://www.codenet.ru/progr/video/3D-Studio-Max-Export-Plugin.php, свободный

  11. GameDev / Основы плагиностроения к 3D Studio Max [Электронный ресурс]. – 2001. Режим доступа к ресурсу: http://www.gamedev.ru/users/wat/articles/MAXPlugins , свободный

  12. 3D Studio File Format Information (3dsinfo.txt) by Jochen Wilhelmy [Электронный ресурс]. – 1997. – Режим доступа к ресурсу: http://www.jalix.org/ressources/graphics/3DS/_unofficials/3ds-info.txt , свободный

  13. Autodesk 3ds Max 8 SDK Help


Приложение А. Руководство пользователя 3D Studio Max
Загрузка плагина.

Работоспособность плагина в среде 3D Studio Max младше версии 5.0 не гарантируется.

Для того, чтобы 3D Studio Max распознал плагин и загрузил в систему, необходимо:

  1. скопировать плагин JoinObjects.dlu в папку stdplugs в каталог установки 3D Max

  2. запустить 3D Studio Max. Плагин должен автоматически загрузиться в память. Для проверки корректной загрузки можно использовать окно Plug-in Manager, находящееся в меню Customize (см. рисунок А). Если справа о названия файла плагина стоит loaded, то файл корректно распознан.




Рисунок А. Окно Plug-in Manager


  1. далее нужно добавить кнопку запуска плагина в перечень утилит. Для этого надо перейти на вкладку Utilities в основной панели инструментов, нажать кнопку Configure Button Sets. Установить счетчик Total Buttons на единицу больше и перетащить плагин JoinObjects, который находится в списке Utiliites данного окна в группе Utilities на кнопку, появившуюся в самом конце списка после увеличения счетчика.

  2. После закрытия окна Configure Button Sets появится кнопка в списке Utilities c названием Join Objects


Работа с плагином

Форма плагина содержит 3 группы кнопок (см. Рисунок Б): группы Object1 и Object2 предназначены для выбора двух объектов. В группе Calculate result object содержится кнопка Calculate and output, при нажатии на которой выполнится функция построения третьего объекта на основе двух предыдущих и результат будет отображен в окнах 3D вида. Для каждого объекта предусмотрена функция, при помощи которой можно определить положение точки относительно объекта. Для данной задачи ее можно применять для определения направления нормалей (объекты должны быть замкнутыми и нормали должны смотреть не вовнутрь объекта, а наружу). Для того, чтобы использовать данную функцию, нужно выбрать точку, делается это с помощью кнопки Pick point (по умолчанию точка имеет координаты (0, 0, 0)) и проверить результат, нажав на кнопку Obj has point. Слева выведется результат операции: true или false

Рисунок Б. Панель управления

Если функция определения положения точки относительно объекта дала отрицательный результат (визуально видно, что точка находится внутри/снаружи объекта, а функция вернула false/true), то необходимо для дальнейших корректных вычислений развернуть нормали для треугольников объекта. Делается это нажатием на кнопке Invert normals для соответствующего объекта.

Приложение Б. Руководство прикладного программиста
Файл динамически подключаемой библиотеки имеет название graphics3d.dll.

Экспортируемыми функциями библиотеки являются:
bool WriteObject3ds(const char *path, object_3d *obj);

Позволяет записать объект obj в файл формата *.3ds. path указывает путь к файлу, включая его название. Если такого файла не существует, то он будет создан
object_3d* JoinObjects(object_3d* obj1, object_3d* obj2);

На основе двух пересекающихся трехмерных объектов, которые передаются как параметры функции, строит результирующий объект и возвращает указатель на него.
object_3d* ReadObject3ds(const char* path);

Позволяет считать объект из *.3ds файла, путь к которому передается в переменной path

Для использования этих функций во внешнем приложении необходимо прописать и заполнить при необходимости структуры (интерфейс библиотеки):
typedef struct point_type

{

double x, y, z;

}point_3d;
typedef struct object_type

{

vector
vertexes; //все вершины объекта

vector faces[3]; //грани.

} object_3d;

Приложение В. Руководство разработчика
В гарницах данной работы реализованы два продукта, позволяющих работать с операцией объединения двух трехмерных объектов: динамическая библиотека (файл graphics3d.dll) и плагин для 3D Studio Max 8.0 (файл JoinObkect.dlu).

Динамическая библиотека разработана в среде Visual C++, для разработки плагина использовался 3D Studio Max SDK.

В ходе работы разработаны следующие классы:

POIN3D – позволяет работать с трехмерной точкой.

LINE3D – позволяет работать с трехмерной прямой. Содержит такие функции как:

  • Поиск точки пересечения двух прямых

  • Факт пересечения двух прямых (пересекаются ли прямые вообще)

  • Расстояние от точки до линии

  • Поиск точки проекции на линию другой точки

LUCH3D – позволяет работать с лучом в трехмерном пространстве. Луч представляет собой точку начала и направление. Специфичных функций не содержит, используется как вспомогательный класс

OBJECT3D – позволяет работать с трехмерным объектом. Содержит такие функции как:

  • Определение положения точки относительно объекта (внутри или снаружи)

  • Поиск списка точек пересечения объекта трехмерной прямой

  • Поиск точек пересечения объекта отрезком трехмерной прямой

  • Построение результирующего объекта на основе пересечения двух других объектов

  • Поиск отрезков пересечения двух объектов и поиск отрезков, не вошедших в пересечение (т.е. построение «каркаса» результирующего объекта, используемый в предыдущей функции)

POLI3D – позволяет работать с полигоном в трехмерном пространстве. Содержит такие функции как:

  • Определение положения точки относительно полигона (внутри или снаружи)

  • Триангуляция произвольного полигона

TRIANGLE3D – позволяет работать с треугольником в трехмерном пространстве. Содержит такие функции как:

  • Подсчет нормали с учетом расположения вершин по часовой стрелке

  • Определение того, лежит ли линия в плоскости треугольника

  • Подсчет площади треугольника

  • Нахождение точки пересечения с прямой, если она существует

  • Определение положения точки относительно треугольника (внутри или снаружи)

  • Расстояние от точки до треугольника

  • Определение принадлежности точки области треугольника

  • Нахождение линии пересечения двух треугольников

VECTOR3D – позволяет работать с вектором в трехмерном пространстве. Содержит такие функции как:

  • Подсчет длины вектора

  • Нахождение скалярного и векторного произведения векторов

  • Нахождение косинуса угла между векторами

  • Проверка на сонаправленность векторов

  • Проверка перпендикулярности векторов

FORMAT3DS – позволяет работать с форматом *.3ds-файлов. Содержит такие функции как:

  • Запись трехмерного объекта в файл

  • Считывание трехмерного объекта из файла


Приложение Г. Пример файла в формате 3ds в двоичном виде
Пирамида с четырехугольным основанием в формате 3ds



Приложение Д. Прототипы функций экспорта данных в dll и работа с интерфейсами
object_3d* ModificationObject1(OBJECT3D &other); //эта функция не //экспортируется

OBJECT3D ModificationObject2(object_3d *other); //эта функция не //экспортируется
extern "C" //Тут экспортируемые функции

{

_declspec (dllexport) bool WriteObject3ds(const char *path, object_3d *obj);
_declspec(dllexport) object_3d* JoinObjects(object_3d* obj1, object_3d* obj2);
_declspec(dllexport) object_3d* ReadObject3ds(const char* part);

}

object_3d* ModificationObject1(OBJECT3D &other);
OBJECT3D ModificationObject2(object_3d *other);

Приложение Е. Пример импорта функций из dll внешним приложением
HINSTANCE hinstLib = LoadLibrary("graphics3d.dll");

if (hinstLib == NULL)

{

printf("ERROR: unable to load DLL\n");

getchar();

}
//получаем функцию JoinnObjects

typedef object_3d* (*JoinObjects)(object_3d *, object_3d *);

JoinObjects JoinObj;

JoinObj = (JoinObjects)::GetProcAddress (hinstLib, "JoinObjects");

//получаем функцию ReadObject3ds

typedef object_3d* (*ReadObject3ds)(const char*);

ReadObject3ds ReadObj;

ReadObj = (ReadObject3ds)::GetProcAddress(hinstLib, "ReadObject3ds");
object1 = new object_3d;

object2 = new object_3d;
object1 = ReadObj("object1.3ds");

object2 = ReadObj("object2.3ds");
object3 = new object_3d;

object3 = JoinObj (object1, object2);


//а теперь запишем в 3ds файл object3

bool res; //тут будет результат записи в файл

typedef bool (*WriteObject3ds)(const char *, object_3d *);

WriteObject3ds WriteObj;

WriteObj = (WriteObject3ds)::GetProcAddress(hinstLib, "WriteObject3ds");

res = WriteObj("ResObj.3ds", object3); //в файле "ResObj.3ds" будет //лежать результирующий объект

cout << "\nWriteObject3ds: " << res;


1   2   3   4

Похожие:

Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconМинистерство образования и науки российской федерации томский государственный...
Целью дисциплины является ознакомление студентов с базовыми понятиями следующих разделов информатики: теория информации, технические...
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconКрасноярский государственный педагогический университет факультет информатики
Задание: Разработать требования к оборудованию и оснащению кабинета информатики с заданным количеством персональных эвт в учебном...
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconМинобрнауки томский государственный университет факультет информатики утверждаю
Задача учебного курса – освоение психолого-педагогических знаний, вопросов методики преподавания, современных методов обучения
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconМолдавский Государственный Университет Факультет Математики и Информатики....
За последние 9 лет (c 1993) в мире персональных компьютеров появился новый участник – персональный карманный компьютер (кпк). Большую...
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconПрограмма по формированию навыков безопасного поведения на дорогах...
Московский Государственный Университет Приборостроения и Информатики, Факультет "Технологическая информатика", кафедра "Компьютерный...
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconМинистерство образования и науки РФ новосибирский государственный...
Когда появляется изображение цепи ордена Андрея Первоз­ванного на российском гербе
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconМинистерство образования и науки российской федерации томский государственный...
Государственное общеобразовательное учреждение-средняя общеобразовательная школа
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconГосударственное образовательное учреждение высшего профессионального...
Аннотация умкд…
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconГосударственное образовательное учреждение высшего профессионального...
Аннотация умкд…
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconГосударственное образовательное учреждение высшего профессионального...
Аннотация умкд…
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconРоссийской Федерации Федеральное государственное бюджетное образовательное...
«Московский государственный университет экономики, статистики и информатики (мэси)»
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconРоссийской Федерации Федеральное государственное бюджетное образовательное...
«Московский государственный университет экономики, статистики и информатики (мэси)»
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconМинистерство сельского хозяйства российской федерации
Е образовательноЕ учреждениЕ высшего профессионального образования «Московский государственный университет экономики, статистики...
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconРоссийской Федерации Карельский государственный педагогический университет...
В 1962 году на факультете физической культуры была создана первая специальная кафедра теоретических основ физического воспитания....
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconМетодические рекомендации по подготовке и выполнению вкр министерство...
Фгбоу впо «Московский Государственный Университет экономики, статистики и информатики (мэси)»
Образования Российской Федерации томский государственный университет факультет информатики Кафедра теоретических основ информатики удк 681. 03 iconО. В. Артюшкин Хакасский государственный университет им. Н. Ф. Катанова...
При рассмотрении информатики с позиций гуманитарной, технической, естественной и фундаментальных наук даются ее определения. В заключительной...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск