Статья Автор: Лебедев Дмитрий Алексеевич

КЧ на Python - Выпуклые оболочки

Из точки A вектором b надо нарисовать правильный N-угольник и подсчитать количество точек с целочисленными координатами внутри него.
Задачу разобьем на два этапа:
  1. Построим список вершин
  2. Переберем  точки в описанном прямоугольнике и подсчитаем количество подходящих
Для выполнения 1-го этапа надо:
  • определить угол поворота = 360/N (только в радианах)
  • можно нарисовать Черепашкой
Выполнять задание будем в комплексных числах, поэтому потребуется библиотека cmath
 

 

Задача могла быть представлена в формате экзамена (КЕГЭ-6. Черепашка)
Исполнителю Черепашка задан алгоритм
  • Поднять перо; Назад 40; Направо 90; Назад 30
  • Налево 30; Опусти перо
  • Повтори 9 раз [Вперед 50 Налево  40]
Вопросы к задаче могли быть заданы следующие:
  1. Сколько точек с целочисленными координатами находятся строго внутри многоугольника (точки на границе не учитываются)
  2. Сколько точек с целочисленными координатами разного знака, находятся строго внутри многоугольника (Число нуль знака не имеет)
  3. Сколько точек с чётной суммой целочисленных координат находятся строго внутри многоугольника (Учитываем только точки с целочисленнми координатами)
  4.  и т.п.
Для ответа на эти вопросы надо уметь
  • проверять положение точки относительно многоугольника
  • описать многоугольник прямоугольником (для перебора всех точек прямоугольника и отбора нужных)

 

Используем библиотеку cmath для работы с комплексными числами
Библиотека cmath во многом аналогична библиотеке math, но работает с комллексными числами и возвращает комплексное значение (там, где это возможно и нужно)
Можно увидеть различие при вызове метода sqrt:
cmath.sqrt(-1) вернет 1j. а math.sqrt(-1) вызовет ошибку (что иногда полезнее, чем значение)
Из наиболее полезных (для геометрии) методов - это получение полярных координат. 
 

Печать