bmstu-ics7 / computer-graphics

:mortar_board: BMSTU ICS7, sem 04

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Count Lines of Code

      83 text files.
      74 unique files.
      11 files ignored.

github.com/AlDanial/cloc v 1.82  T=0.16 s (461.7 files/s, 62747.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C++                             26            908             48           3973
Qt                              10              0              0           3404
C/C++ Header                    26            210              0            798
ProGuard                        10            100            140            192
Markdown                         1             54              0             93
-------------------------------------------------------------------------------
SUM:                            73           1272            188           8460
-------------------------------------------------------------------------------

lab 01

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

lab 02

Нарисовать следующий рисунок, затем осуществить его перенос, масштабирование и поворот

  1. Вывод исходного изображения
  2. Перенос $(dx;dy)$
  3. Масштабирование $(x_m, y_m, k_x, k_y)$
  4. Поворот $(x_e,y_e,\Theta)$
  5. Откат

lab 03

Реализация и исслевдование алгоритмов построения отрезков

  1. Построение отдельных отрезков $x_\text{н}, y_\text{н}, x_\text{к}, y_\text{к}$
    • Выбор алгоритма:
    • ЦДА
    • Брезенхем с действ числами
    • Брезенхем с целыми числами
    • Брезенхем с устранением ступенчатости
    • Алгоритм Ву (необязательная часть)
    • Библ. алг.
  2. Выбор цвета (Заданный цвет, цвет фона)

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

$l - \text{длина отрезка}\ \ \ \ \ \Delta Q - \text{шаг}$

Быстрый выбор цвета

3 часть Факультативная (необязательно)

Исследовать ступенчатость

lab 04

Реализация и исследование алгоритмов построения окружностей и эллипсов

  1. Построение окружности

    • Одиночные окружности

      Алгоритмы

      1. Каноническое уравнение $(x-x_0)^2 + (y-y_0)^2 = R^2$
      2. Параметрическое $\begin{cases}x(t) = 2cos(t) \\ y(t) = 2sin(t)\end{cases}$
      3. Алгоритм Брезенхема
      4. Алгоритм средней точки
      5. Библиотечная функция

    $R, x_0, y_0, \text{цвет}$

    • Спектр концетрических окружностей

      $R_\text{н},R_\text{к}, \Delta R, N - \text{кол-во}$
      Цвет рисунка, цвет фона

    • Исследование радиуса от времени

  2. Построение эллипсов

    • Одиночные эллипсы
    1. ${(x-x_0)^2 \over a^2} + {(y-y_0)^2 \over b^2} = 1$
    2. $\begin{cases}x(t) = acos(t) \\ y(t) = bcos(t)\end{cases}$
    3. Брезенхем (мод.)
    4. Средней точки
    5. Библиотечный

lab 05

Реализация алгоритма растрового заполнения (одного из четырех)

  1. Ввод данных "мышиный ввод" с показом ребер (одна внешняя граница + несколько внутренних границ) Горизонтальные и вертикальные ребра с зажатием клавиши Клавиатурный ввод
  2. Выбор цвета (цвет границы, цвет заполнения, цвет фона)
  3. Закраска С задержкой обработки очередной строки

Варианты

  1. С упорядоченным списком ребер (Номер mod 4 = 1) (1, 5, 9, …)
  2. По ребрам (номер mod 4 = 2) (2, 6, 10, ...)
  3. С перегородкой (Номер mod 4 = 3) (3, 7, 11, ...)
  4. С флагом (Номер mod 4 = 0) (4, 8, 12, ...)

lab 06

Реализация алгоритма построчного затравочного заполнения

Все как в прошлой

lab 07

Отсечение отрезка стандартным отсекателем

№ по списку mod 3

  • =1, то простой алгоритм
  • = 2, то Коэна-Садерленда
  • = 0, то Средней точки
  1. Ввод отсекателя $(x_\text{л}, x_\text{пр}, y_\text{н}, y_\text{в})$ Заполнить цветом 1
  2. Ввод отрезков (предусмотреть ввод горизонтальных и вертикальных) Цвет 2
  3. Отсечение показать цветом 3

lab 08

Отсечение отрезка произвольным выпуклым многоугольником

  • Вводим различные отрезки (возможность ввести отрезок, параллельный отсекаемому отрезку)
  • Отображать 3 цветами

lab 09

Реализация алгоритма Сазерленда-Ходгмана

  • Первый цвет для осекателя
  • Второй цвет для многоугольника, который отсекаем
  • Третий цвет для отсечения (можно обвести удвоенным или утроенным отрезком)

Обеспечить ввод точек, располагающихся на ребре (вершине) отсекателя

lab 10

Реализация алгоритма плавающего горизонта

Модуль с описанием и выражениями вида $y(x, z)$

$y = sin^2(x) - cos^2(z)|\nabla$

Ввод: $x_\text{н}, x_\text{к}, \Delta x, z_\text{н}, z_\text{к}, \Delta z$

Выбор цвета
Построение

Поворот вокруг каждой из осей $(x,y,z)$

$5^o - \Delta \Theta$

About

:mortar_board: BMSTU ICS7, sem 04

License:MIT License


Languages

Language:C++ 92.2%Language:QMake 7.7%Language:C 0.1%