Одна из самых удобных тем для тренировки навыков моделирования — геометрия. Она визуально представима и интуитивно понятна для всех. В этом уроке мы научимся моделировать конкретную предметную область с ее помощью.
Моделируем предметную область
Координатная плоскость — плоскость, на которой задана система координат. Координаты задаются на двух пересекающихся под прямым углом прямых x
и y
. Они называются числовыми осями. Речь идет о декартовой системе координат:
y |
|
6 |
5 |
4 |
3 | . (2, 3)
2 |
1 |
----------+--------------------
| 1 2 3 4 5 6 x
|
|
Мы расположили на плоскости точку. Ее положение определяется двумя координатами. В математике она записывается так: (2, 3)
, где первое число — координата по оси x
, а второе — по оси y
. В коде ее можно представить как кортеж, который состоит из двух элементов:
# x = 2, y = 3
point = (2, 3)
# или же
point = 2, 3
Этого уже достаточно, чтобы выполнять различные операции. Например, искать симметричную точку относительно оси x
. Для этого нужно инвертировать второе число — поменять знак на противоположный:
y |
|
6 |
5 |
4 |
3 | . (2, 3)
2 |
1 |
-----------------------------------
-1 | 1 2 3 4 5 6 x
-2 |
-3 | . (2, -3)
-4 |
-5 |
-6 |
Так это выглядит в коде:
# x = 2, y = 3
point = 2, 3
x, y = point
# x = 2, y = -3
symmetrical_point = x, -y
Иногда нужно найти точку, которая находится между двумя другими точками посередине. В этом случае говорят, что нужно найти середину отрезка.
Такая точка вычисляется через поиск среднего арифметического каждой из координат. То есть координата x
"срединной" точки равна (x1 + x2) / 2
, а координата y
— (y1 + y2) / 2
:
def get_middle_point(p1, p2):
x1, y1 = p1
x2, y2 = p2
x = (x1 + x2) / 2
y = (y1 + y2) / 2
return x, y
point1 = 2, 3
point2 = -4, 1
get_middle_point(point1, point2)
# (-1, 2)
Подобных операций в геометрии очень много. Все функции в коде, которые связаны с работой точек, логично поместить в модуль points
.
Когда точки объединяются, образуются отрезки. Каждый отрезок задается парой точек — противоположных концов отрезка. В коде отрезок можно представить аналогично точке в виде кортежа из двух элементов:
point1 = 3, 4
point2 = -8, 10
segment = point1, point2
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.