Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Геометрические преобразования в пространстве

Автор:   •  Октябрь 25, 2020  •  Лабораторная работа  •  4,289 Слов (18 Страниц)  •  343 Просмотры

Страница 1 из 18

ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра «Компьютерные технологии»

Отчет о выполнении лабораторной работы №3

«ГЕОМЕТРИЧЕСКИЕ ПРЕОБРАЗОВАНИЯ В ПРОСТРАНСТВЕ»

по дисциплине «Компьютерная графика»

        Вариант 1        

Выполнил: студент гр. 17ВГ1 Дебердеев Т. И.

Проверил: к.т.н., доц. Абрамов И. А.

Пенза, 2020

Цель работы: 

Составить программу для трёхмерных преобразований и вычисления плоских проекций трёхмерных объектов. Продемонстрировать результаты на экране компьютера.

Задание: 

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

 Вариант задания:

[pic 1]

Ход выполнения работы:

#include <Windows.h>

#include <cmath>

#include <string>

#define PI 3.14159245

char szClassName[] = "CG_WAPI_Template";

bool ProjectionFlag;

double Rotation[4][4];

double Moving[4][4];

double Scaling[4][4];

double Mirror[4][4];

double Projection[4][4];

double ProjectionXY[4][4];

double figurePoint[9][4] = { {-100,0,100,1},

                                                          {-100,0,-100,1},

                                                          {100,0,-100,1},

                                                          {100,0,100,1},

                                                          {-50,-50,50,1},

                                                          {-50,-50,-50,1},

                                                          {50,-50,-50,1},

                                                          {50,-50,50,1},

                                                          {0,100,0,1}

};

void InitRotation()

{

        for (size_t i = 0; i < 4; ++i) {

                for (size_t j = 0; j < 4; ++j) {

                        Rotation[i][j] = 0;

                        Moving[i][j] = 0;

                        Scaling[i][j] = 0;

                        Mirror[i][j] = 0;

                        Projection[i][j] = 0;

                        ProjectionXY[i][j] = 0;

                }

                Rotation[i][i] = 1;

                Moving[i][i] = 1;

                Scaling[i][i] = 1;

                Mirror[i][i] = 1;

                Projection[i][i] = 1;

                ProjectionXY[i][i] = 1;

        }

}

void SetRotationMatrix(double R) {

        Rotation[0][0] = cos((R * PI) / 180);

        Rotation[1][0] = -sin((R * PI) / 180);

        Rotation[0][1] = sin((R * PI) / 180);

        Rotation[1][1] = cos((R * PI) / 180);

}

void SetMovingMatrix(double R) {

        Moving[3][0] = R;

}

void SetScalingMatrix(double R) {

        Scaling[1][1] = R;

}

void SetMirrorMatrix() {

        Mirror[2][2] = -1;

}

void SetProjectionXYMatrix(double R) {

        ProjectionXY[0][3] = R;

        ProjectionXY[1][3] = R;

}

void SetProjectionMatrix() {

        Projection[1][1] = cos((20 * PI) / 180);

        Projection[1][2] = -sin((20 * PI) / 180);

        Projection[2][1] = sin((20 * PI) / 180);

        Projection[2][2] = cos((20 * PI) / 180);

}

void Multiply(double Matr1[9][4], double Matr2[9][4], double conversion[4][4])

{

        for (size_t i = 0; i < 9; ++i)

        {

                double buf[4] = { Matr1[i][0],Matr1[i][1],Matr1[i][2], Matr1[i][3] };

                for (size_t j = 0; j < 4; ++j)

                {

                        Matr1[i][j] = 0;

                        for (size_t k = 0; k < 4; ++k)

                                Matr1[i][j] += buf[k] * conversion[k][j];

                }

        }

        for (size_t i = 0; i < 9; ++i)

                for (size_t j = 0; j < 3; ++j)

                        Matr2[i][j] = Matr1[i][j] / Matr1[i][3];

}

void Multiply(double Matr1[9][4], double conversion[4][4])

...

Скачать:   txt (11.6 Kb)   pdf (205.6 Kb)   docx (58 Kb)  
Продолжить читать еще 17 страниц(ы) »
Доступно только на Essays.club