Python - дополнительная форма шестерни

Я пытаюсь найти дополнительную вращающуюся форму "шестеренки" для любой входной формы многоугольника. Например, этот многоугольник вращается вокруг так, что дополнительная передача становится очевидной. Обе фигуры смогут вращаться без помех.

У меня проблемы с определением второго многоугольника, который является краем белой внутренней области. Один из методов, который я могу придумать, - это "выборка" входной формы по ее окружности и вращение, как раньше, для создания облака точек. Алгоритм вогнутой оболочки (альфа-форма) может быть использован для получения края.

Хотя это будет работать, я чувствую, что должно быть более элегантное решение этой проблемы.

Спасибо

шестерни Многоугольник и его повернутое изображение

выборочные формы Отобранный полигон и результирующее облако точек

край увеличения заделывают края

2 ответа

Я понял. Решение состоит в том, чтобы отслеживать все вершины и специальные точки для каждого ребра. Затем внутренняя зубчатая форма может быть извлечена путем пересечения всех полученных кривых.

Точка контакта на краях - это точка на том крае, которая ближе всего расположена к центру мгновенного вращения шестерни, то есть точке соприкосновения двух базовых окружностей.

Я использую стройные, чтобы сделать пересечения.

Я попытался загрузить GIF, но это не сработало, поэтому вот ссылка:

https://photos.app.goo.gl/nuYUv03ZWTYpFJrq2

тестовое задание

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

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

Я попытался загрузить GIF, но это не работает, так что вот вместо этого:

https://photos.app.goo.gl/nuYUv03ZWTYpFJrq2

тестовое задание

Другие вопросы по тегам