Построение изображения полиэдра с удалением невидимых линий — пример классической задачи, для успешного решения которой необходимо знакомство с основами вычислительной геометрии.
Назовём точку в пространстве «хорошей», если её проекция находится строго внутри окружности
x**2 + y**2 = 4
, но строго вне окружностиx**2 + y**2 = 1
. Модифицируйте эталонный проект таким образом, чтобы определялась и печаталась следующая характеристика полиэдра: сумма длин рёбер, оба из концов которых — «хорошие» точки.
- В класс
Tkdrawer
добавляется метод для рисования кольца. - Координаты точек, необходимых для рисования кольца, умножаются на коэффициент гомотетии для корректного отображения.
- В класс
R3
добавляется метод, проверяющий, является ли конкретная точка хорошей. - В класс
Edge
добавляется метод, вычисляющий длину ребра. - При построении полиэдра в классе
Polyedr
теперь вычисляется суммарный периметр ребер, оканчивающихся «хорошими» точками. - Создается массив смежности вершин, необходимый для отбрасывания ситуаций, в которых одно ребро принадлежит двум граням и может быть случайно посчитано дважды.
- Добавлены соответствующие тесты на проверку правильности вычисления периметра полиэдра.
find . -name '*.py' -exec pycodestyle {} \;
python -B -m coverage run -m unittest discover tests && coverage report -m ; rm -f .coverage