Главная | Случайная
Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Определение структуры данных программы.




Введение

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

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

Понятие компьютерной графики связано с понятием каркасной модели. Каркасная модель — модель объекта в трёхмерной графике, представляющая собой совокупность вершин и рёбер, которая определяет форму отображаемого многогранного объекта. Каркасная модель так же называет проволочной.

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

В компьютерной графике так же используется понятие матрицы поворота. Матрицей поворота (или матрицей направляющих косинусов) называется матрица, которая используется для выполнения собственного ортогонального преобразования в евклидовом пространстве. При умножении любого вектора на матрицу поворота длина вектора сохраняется. Определитель матрицы поворота равен единице. Любое вращение в трехмерном пространстве может быть представлено как композиция поворотов вокруг трех ортогональных осей (например, вокруг осей декартовых координат).


Постановка задачи

Необходимо разработать программу на языке Си (С++), реализующую процесс построения и визуализации экранного отображения каркасной модели трехмерного объекта. Объект моделирования: каркасная модель трехмерного объекта (модель дивана).

Необходимо составить геометрическую модель трехмерного объекта, включающего описание координат вершин и ребер, сложностью не менее 50 вершин.

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

Требуется создать анимационный роли, где демонстрируется работа программы.

 


 

Выбор решения

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

Модель дивана состоит из 66 точек. Эти точки хранятся в исходном файле «my.txt» (см. приложение А.2). В этом файле так же хранятся номера точек, которые необходимо, чтобы программа соединила. Тогда на экране появится графическое изображение объекта.

При построении фигуры программа считывает из файла количество точек, выделяет динамическую память для хранения этих точек. Далее программа считывает число связей, так же выделяя динамическую память. Связи хранятся в отдельной структуре. Следует отметить, что был придуман алгоритм, позволяющий построить фигуру, используя структуру со связями.

При выводе изображения на экран происходит перевод из трехмерных координат в двумерные с помощью проецирования. Это действие записано отдельной процедурой и вызывается при каждом изменении координат искомой фигуры.

Поворот объекта осуществляется изменением координат, а именно умножением координат фигуры на матрицу поворота.

В программе используется две матрицы поворота: по оси Х и по оси У. Матрицы поворота имеют следующий вид:

В программе предусмотрена анимация объекта. Она демонстрирует возможности программы, поворачивая объект, приближая и отдаляя его.

В программе было создано диалоговое окно, которое показывает пользователю клавиши, которые управляют вращением фигуры, масштабированием и изменением угла поворота и коэффициента масштабирования.

Определение структуры данных программы.

Для структурирования данных внутри программы используются динамические массивы структур. Они имеют следующий вид:

struct coord_3d { // Трехмерные координаты

float x;

float y;

float z;

} *coor_3d, *copycoor_3d;

 

struct coord_2d { // Двумерные координаты

float sx;

float sy;

} *coor_2d;

 

struct sctlinks { // Для построения фигуры (точки, которые нужно соединить, соединить one с two)

int one;

int two;

} *links;

 

struct sctmatrix { // Умноженная матрица

float x;

float y;

float z;

} matrix[3];

 

Программа умеет делать следующее:

1. Строить исходную фигуру

2. Вращать фигуру с помощью клавиш-стрелок.

3. Приближать и отдалять объект.

4. Изменять значения угла поворота и коэффициента масштабирования.

5. Показывать анимацию.




Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2019 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных