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

Алгоритмы отсечения отрезков

Автор:   •  Ноябрь 25, 2020  •  Лабораторная работа  •  5,344 Слов (22 Страниц)  •  366 Просмотры

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТИЕТ

Лабораторная работа №5

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

Алгоритмы отсечения отрезков

Группа: АВТ-510

Студенты: Куксова Е.С. и Рейнгардт Ю.А.

Преподаватель: Дружинин А.И.


Цель:

Изучить алгоритмы отсечения отрезков.

Задание:

1. Постройте окно отсечения.

2. Постройте отрезок, пересекающий окно отсечения.

3. Произведите отсечение отрезка с помощью любого алгоритма.

4. Выделите другим цветом отсекаемую часть отрезка.

5. Повторите п.п. 2 и 3 для полностью видимых и невидимых отрезков.

Ход работы:

В качестве инструмента был выбран язык С++, а также библиотека для графики OpenGL. Рисуем окно, пишем функции, используем их, сравниваем результат.

Текст программы:

#include <windows.h>

                          #include <glut.h>   //Подключение библиотеки glut.h

                          #include <iostream>

                          using std::cin;

                          using std::cout;

                          void Initialize()

                          {

                          //Выбрать фоновый (очищающий) цвет

                          glClearColor(0.0, 0.2, 0.9, 0.0);//белый

                          //Установить проекцию

                          glMatrixMode(GL_PROJECTION);

                          glLoadIdentity();

                          glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);

                          }

                          #define SLEEP 3000 //пауза между  отрисовками

                          #define PIXSIZE 10

                          #define S_WIDTH 1024

                          #define S_HEIGHT 768

                          int minX = -10, maxX = 10, minY = -10, maxY = 10;

                          float getX(int inp){ //Координаты Х

                          if (inp > 0){

                          return 0.5 + (1.0 / S_WIDTH)*(inp*PIXSIZE);

                          }

                          else if (inp < 0){

                          inp *= (-1);

                          if (inp > int(inp)) inp += 1.0;

                          return  0.5 - (1.0 / S_WIDTH)*(inp*PIXSIZE);

                          }

                          else return 0.5;

                          }

                          float getY(float inp){ //Координаты У

                          if (inp >= 0){

                          return 0.5 + (1.0 / S_HEIGHT)*(int(inp)*PIXSIZE);

                          }

                          else if (inp < 0){

...

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