Файл: Отчет по лабораторной работе 1 По дисциплине Компьютерная графика.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 07.11.2023

Просмотров: 55

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.













Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)


ФРАКТАЛЬНАЯ ГРАФИКА

Отчет по лабораторной работе №1

По дисциплине

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

Выполнил: студент гр.

_______________

«___»___________ 2023 г.
Проверил: ассистент каф. АСУ

_______________

«___»___________ 2023 г.


Томск 2023

1 Задание на лабораторную работу


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

2 Листинг программы

#include

#include

#include

#define SDL_MAIN_HANDLED

#include

std::complex Function(std::complex number)

{

return (std::pow(number, 4) - 1.0);

}

int main()

{

int width = 640;

int height = 480;

SDL_Event event;

SDL_Renderer* renderer;

SDL_Window* window;

SDL_Init(SDL_INIT_VIDEO);

SDL_CreateWindowAndRenderer(width, height, 0, &window, &renderer);

SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);

SDL_RenderClear(renderer);

int red = 0;

int green = 0;

int blue = 0;

double x = 0.9;

double y = 0.8;

for (int i = 0; i < height; ++i)

{

for (int j = 0; j < width; ++j)

{

std::complex number(i * 2 * x / height - x, j * 2 * y / width - y);

int k = 0;

for (k = 0; k < 100; ++k)

{

if (std::abs(Function(number)) < 0.001)

{

break;

}

std::complex pow4 = std::pow(number, 4);

std::complex pow3 = std::pow(number, 3);

number = (3.0 * pow4 + 1.0) / (4.0 * pow3);

}

red = k * 510 / 100 + 255;

green = k * 510 / 100 + 255;

blue = k * 510 / 100 + 255;

SDL_SetRenderDrawColor(renderer, red, green, blue, 255);

SDL_RenderDrawPoint(renderer, j, i);

}

}

SDL_RenderPresent(renderer);

while (1) {

if (SDL_PollEvent(&event) && event.type == SDL_QUIT)

break;

}

SDL_DestroyRenderer(renderer);

SDL_DestroyWindow(window);

SDL_Quit();

return EXIT_SUCCESS;

}

3 Пример решения


Фрактал ньютона построенный с помощью разработанной программы изображен на рисунке 3.1.



Рисунок 3.1 - Пример работы программы.

4 Вывод


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