-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtask.txt
66 lines (55 loc) · 3.57 KB
/
task.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
SAPR/
│
├── main.py # Точка входа в приложение
├── ui/ # Интерфейсы
│ ├── main_window.py # Главное окно приложения
│ ├── canvas.py # Окно для рисования
│ └── toolbar.py # Панель инструментов
│
├── core/ # Логика и алгоритмы
│ ├── geometry.py # Алгоритмы построения (отрезок, круги, дуги и т.д.)
│ ├── transformations.py # Повороты, панорамирование, масштабирование
│ ├── objects.py # Объекты (линии, окружности, сплайны и т.д.)
│ ├── utils.py # Вспомогательные функции
│ └── spline.py # файл сплайна
│
├── config/ # Конфигурации
│ ├── settings.py # Глобальные настройки (толщина линий, типы линий)
│ └── styles.py # Стили интерфейса
ГЕОМЕТРИЧЕСКОЕ МОДЕЛИРОВАНИЕ
Задача создать САПР
Написать приложение на Python, в котором можно будет:
1. Строить отрезок в 2d, приложение должно поддерживать два способа описания СК:
a. Декартову систему координат;
b. Полигональную систему координат.
2. Панорамирование (сложение векторов для каждой точки). Например, зажатием средней кнопки мыши можно перемещаться по плоскости.
3. Зуммирование. Коэффициент приближения/отдаления = количество прокрутов колеса мыши
4. Поворот.
В самом приложении должен быть интерфейс с выбором функций, для этого нужно использовать библиотеки (для отрисовки линий можно использовать алгоритм Брезенхэма).
Окружность:
1) из центра + радиуса
2) 3 точки касания
Сплайн:
1) безъе
2) отрезки, а потом он скругляет эти отрезки
Дуга:
1) по 3 точкам
2) радиус + хорда
Многоугольник:
1) сам многоугольник
2) описанный
3) вписанный
Прямоугольник:
1) по сторонам
2) от центра
Типы линий:
1) сплошная (тонкая, толстая)
2) штриховая
3) штрих пунктирная
4) штрихпунктирная с двумя точками
Толщина линий:
Где будем хранить тип линий и толщину линий - глобальные переменные, чтобы изменялась у каждого объекта
надо сделать так чтобы у уже созданных объектов можно было редактировать их значения и они изменялись
также нужно чтобы была координатная сетка и размерности
в целом чтобы выглядело как полноценная 2д САПР
Используя PyQt