Построение экранного отображения каркасной модели трехмерного объекта
Автор: tumerkin2014 • Май 21, 2020 • Лабораторная работа • 9,882 Слов (40 Страниц) • 462 Просмотры
МИНИСТЕРСТВО ВЫСШЕГО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГБОУВО «Пензенский государственный университет»
кафедра САПР
Отчёт
о выполнении лабораторной работы №4
«ПОСТРОЕНИЕ ЭКРАННОГО ОТОБРАЖЕНИЯ КАРКАСНОЙ МОДЕЛИ ТРЕХМЕРНОГО ОБЪЕКТА»
по курсу «Компьютерная графика»
Вариант №2
Выполнили: ст.гр. 18ВА1
Архипкин Е.А.
Козлова А.А.
Проверил: Бождай А.С.
Пенза, 2020 г.
Цель работы: научиться использовать аппарат видовых, перспективных и экранных преобразований для генерации плоских проекций трехмерных объектов, представленных в виде каркасных геометрических моделей.
Задание: Тетраэдр (четырехгранник из правильных треугольников)
Геометрическое описание объекта в текстовом документе my1.txt:
[pic 1]
Изображения объекта:
[pic 2] [pic 3]
[pic 4] [pic 5]
Изображение строится на основе текстового файлу my1.txt который хранит в себе координаты вершин и соединения рёбер.
Управление:
Управление объектом осуществляется с помощью клавиш клавиатуры таких как стрелки, функциональных клавиш (f1, f2 и т.д.), а так же с помощью клавиш расположенных на цифровой клавиатуре.
Листинг:
#include "stdafx.h"
#include "KG.h"
#include
#include
#include
#define MAX_LOADSTRING 100
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
HWND hWnd;
HWND butt1;
HPEN hPen;
FILE * my;
int i, j;
int c_number; // Количество координат в структуре трехмерных координат
int links_number; // Количество соединений
int dist = 1500; // Расстояние от камеры до начала координат
float Pi = 3.14159265358979323846;
int flag;
int alpha; //угол поворота
float k; //коэффциент масштабирования
char buf[1], buf1[1], buf3[1], buf4[4]; //Перменные для вывода значений угла и коэффициента на экран
LPCWSTR str, str1, str2, str3; //Преобразуются itoa в char
int a = 1, b = 0, c = 0, d = 1;
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];
HINSTANCE hInst;
TCHAR szTitle[MAX_LOADSTRING];
TCHAR szWindowClass[MAX_LOADSTRING];
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
...