Skip to content

bmstu-ics7/computer-graphics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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$