Веду на сто
Учебная статья

Координаты, границы и геометрические области

Как описывать движение и фигуры координатами, считать целые точки и работать с пересечением, объединением и наклонными границами.

Рисунок показывает форму области, а координаты позволяют точно указать, какие точки ей принадлежат. Это различие особенно полезно в задачах с исполнителем Черепаха: команды сначала превращаются в вершины и стороны, затем фигура — в условия на координаты. По этим условиям можно считать точки, находить общую область и проверять результат без оценки «на глаз».

Координаты и направление движения

Точка (x;y) задаётся двумя числами: x определяет положение по горизонтали, y — по вертикали. Движение вправо увеличивает первую координату, вверх — вторую. Движения влево и вниз уменьшают соответствующие координаты.

У Черепахи кроме положения есть направление головы. Если голова смотрит вверх, команда Вперёд 3 переводит точку (2;1) в (2;4). Если голова смотрит вправо, та же команда приводит в (5;1). Команда поворота меняет направление, но не координаты.

Назад 3 означает движение против направления головы, без разворота. Отрицательный аргумент меняет сторону движения ещё раз: Назад -3 действует на положение как Вперёд 3. Состояние хвоста влияет только на след: при поднятом хвосте координаты и направление продолжают изменяться по командам.

Повороты на полный оборот не меняют направление. Например, налево на 270^\circ даёт то же направление, что направо на 90^\circ. Это равенство направлений, а не перемещение в новую точку.

След и конечное состояние

Повторение уже нарисованного контура не создаёт новую геометрическую область. Однако число повторов может изменить положение и направление, из которых начинается следующая часть алгоритма.

Например, блок Вперёд 5 Направо 90 Вперёд 11 Направо 90 при старте вверх рисует две стороны прямоугольника. Два повтора замыкают контур и возвращают исходное состояние. Три повтора оставляют тот же контур, но завершаются в противоположном углу с направлением вниз. Поэтому совпадение рисунка не означает совпадение состояния исполнителя.

Область, внутренняя часть и граница

Прямоугольник со сторонами вдоль осей удобно задать двумя промежутками. Например:

2\le x\le5,\qquad 1\le y\le3.

Оба условия должны выполняться одновременно. Они включают прямоугольник вместе с границей. На границе хотя бы одна координата равна своему крайнему значению: например, (2;2) лежит на левой стороне, а (5;3) — в вершине. Для внутренней части знаки неравенств становятся строгими:

2<x<5,\qquad 1<y<3.

Здесь на границах стоят целые числа. Если граница наклонная, равенство одной координаты крайнему значению уже не описывает всю сторону: нужны уравнение прямой или другой точный способ проверки.

Число точек, площадь и периметр

В предыдущем прямоугольнике ширина равна 5-2=3, высота — 3-1=2. Площадь и периметр считаются по этим длинам:

S=3\cdot2=6,\qquad P=2(3+2)=10.

Для целочисленных точек нужны другие числа. По горизонтали подходят 2, 3, 4, 5 — четыре значения; по вертикали 1, 2, 3 — три. Каждое горизонтальное значение сочетается с каждым вертикальным:

N_{\text{с границей}}=4\cdot3=12.

Без границы остаются только x=3,4 и y=2, то есть две точки. Разница возникает не из-за масштаба рисунка: длины измеряют отрезки между точками, а подсчёт включает сами точки.

В общем случае от целого a до целого b включительно находится b-a+1 целых чисел. Между ними без концов — b-a-1, если это число положительно; иначе подходящих чисел нет. Формулы прямоугольника применимы к сторонам вдоль осей и целым границам. Для наклонной фигуры их нельзя применять к окружающей её рамке.

Пересечение и объединение

Пересечение состоит из точек, которые входят в обе фигуры. Для прямоугольников общие координаты можно найти отдельно по каждой оси. Например, первый допускает 0\le x\le20, второй — 9\le x\le24. Одновременно оба условия выполняются при 9\le x\le20.

Объединение включает точки хотя бы одной фигуры. Общая часть принадлежит объединению, но каждая её точка учитывается один раз. Для фигур A и B объединение обозначается A\cup B, пересечение — A\cap B. Если буквой N с соответствующим индексом обозначить число целых точек в каждой области, то:

N_{A\cup B}=N_A+N_B-N_{A\cap B}.

При сложении общая часть появляется дважды; вычитание оставляет одну копию. Такое же правило действует для площади. Периметр определяется по границе итоговой области. При объединении часть сторон может оказаться внутри области и перестать быть её границей. Сначала выделяются нужные участки, затем складываются их длины.

Условия включения границы сохраняются и при операциях с фигурами. Для пересечения с границей подходят точки, которые входят в каждую фигуру вместе с её границей. Если требуется только внутренняя часть итоговой области, её граница рассматривается отдельно; нельзя автоматически удалять все линии, которые когда-либо нарисовала Черепаха.

Наклонная граница: подсчёт по рядам

В задаче о точках внутри наклонного квадрата ↗ Черепаха начинает в точке (0;0), голова направлена вверх, хвост опущен. Она выполняет алгоритм Направо 90 Повтори 7 [Направо 45 Вперёд 11 Направо 45]. Требуется посчитать целочисленные точки строго внутри нарисованной фигуры.

Начальный поворот направо на 90^\circ разворачивает голову вправо. Первый поворот внутри цикла добавляет ещё 45^\circ, поэтому первая сторона идёт вправо и вниз. Между соседними командами движения выполняются два поворота по 45^\circ: один в конце повтора, другой в начале следующего. Направления сторон различаются на 90^\circ, а длина каждой равна 11. После четырёх повторов получается замкнутый квадрат; следующие три проходят по уже нарисованным сторонам.

Первая сторона наклонена к горизонтали под углом 45^\circ, поэтому горизонтальное и вертикальное смещения равны по величине. Если каждую из этих величин обозначить a, то по теореме Пифагора a^2+a^2=11^2, откуда a=11/\sqrt2. Первая сторона увеличивает координату x на a и уменьшает y на столько же. С учётом следующих поворотов вершины квадрата имеют координаты:

(0;0), (a;-a), (0;-2a), (-a;-a).

Квадрат с вершиной в начале координат и нижней вершиной на y = −11√2. На горизонтальном ряду y = −8 внутри отмечены 15 целочисленных точек.

Для каждой целой ординаты считается отдельный горизонтальный ряд. В верхней части стороны проходят по прямым x=y и x=-y. Например, при y=-3 внутренние точки удовлетворяют -3<x<3: это -2,-1,0,1,2, всего пять. Значения x=-3 и x=3 лежат на сторонах и исключаются.

Нижняя вершина имеет ординату -2a=-11\sqrt2\approx-15{,}556. На уровне y высота над этой вершиной равна y-(-11\sqrt2)=11\sqrt2+y. Нижние стороны также наклонены под углом 45^\circ, поэтому горизонтальное расстояние от оси до стороны равно этой высоте. Например, при y=-8:

-(11\sqrt2-8)<x<11\sqrt2-8.

Правая граница примерно равна 7,556. Внутри остаются целые значения от −7 до 7 — пятнадцать точек. Округлять границу до 8 нельзя: точки с x=\pm8 уже вне квадрата.

РядыТочек в каждом рядуВсего
y=-1,-2,\ldots,-71, 3, 5, 7, 9, 11, 1349
y=-8,-9,\ldots,-1515, 13, 11, 9, 7, 5, 3, 164

Ряд y=0 содержит только верхнюю вершину, а она исключена условием. Ниже y=-15 целых рядов внутри уже нет. Всего получается 49+64=113 точек.

Применение в заданиях

Как из программы Черепахи получить границы двух прямоугольников? Почему одинаковый рисунок может дать разные ответы на вопросы о точках, площади и периметре?

Эти переходы разобраны на примерах в статье «Задание №6. Черепаха и геометрические фигуры».

Связанные материалыЗадание №6. Короткий конспект