-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
61 lines (47 loc) · 2.1 KB
/
main.py
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
from typing import List
from matplotlib import pyplot as plt
import numpy as np
from working_area import WorkingArea
import read_write as rw
from line import Line
def print_lines(lines: List[Line]):
"""
Напечатать информацию о линиях в консоль
"""
for i, line in enumerate(lines):
print(f'Линия {i}: ')
line.print_line_points()
print()
def rescale_line_points(lines: List[Line], rescale_value: float) -> List[Line]:
"""
Делит все точки массива с координатами линий на заданное значение для изменения масштаба
:param lines: Список линий
:param rescale_value: Значение, на которое будут поделены все координаты точек
"""
line_count: int = len(lines)
for i in range(line_count):
lines[i].first_point.x /= rescale_value
lines[i].first_point.y /= rescale_value
lines[i].second_point.x /= rescale_value
lines[i].second_point.y /= rescale_value
return lines
def main():
cluster_count: int
lines: List
lines, cluster_count = rw.read_file_with_line_points(file_index=2)
# Вывод отладочной информации
line_count: int = len(lines)
print(f'Количество входных линий: {line_count}')
print(f'Количество кластеров: {cluster_count}')
# Уменьшим масштаб точек, задающих линии
lines = rescale_line_points(lines, 100.0)
# Отобразим картинку со всеми прямыми
working_area_limits: List[int] = [-100, 100, -100, 100]
working_area: WorkingArea = WorkingArea(lines, working_area_limits)
image = working_area.get_line_intersection_map()
# Отсечём по порогу самые яркие точки
# image = np.where(image > 100, 1, 0)
plt.imshow(image, interpolation='none')
pass
if __name__ == '__main__':
main()