Многоугольники задаются массивами вершин. Обход вершин должен быть против часовой стрелки.
Def<Conform2d> maxConvexPolygonInPolygon ( CCArrRef<Vector2d> & inner, CCArrRef<Vector2d> & outer );Ответ получатся в виде ортогонального преобразования, которое надо применить к вершинам внутреннего многоугольника ( inner ), чтобы получить его оптимальное положение. Следующая функция делает то же самое, но без вращения: Def<Conform2d> maxConvexPolygonInPolygonNR ( CCArrRef<Vector2d> & inner, CCArrRef<Vector2d> & outer );• Максимальный по площади прямоугольник: Def<Rectangle2d> maxRectangleInPolygonA ( CCArrRef<Vector2d> & poly );Следующая функция делает то же самое, но без вращения: Def<Rectangle2d> maxRectangleInPolygonANR ( CCArrRef<Vector2d> & poly );• Максимальный ромб ( A - максимум площади, P - максимум периметра ): Def<Rhombus2d> maxRhombusInPolygonA ( CCArrRef<Vector2d> & poly ); Def<Rhombus2d> maxRhombusInPolygonP ( CCArrRef<Vector2d> & poly );Следующая функция делает то же самое, но без вращения: Def<Rhombus2d> maxRhombusInPolygonANR ( CCArrRef<Vector2d> & poly ); В приложении DEMO можно посмотреть примеры использования этих функций.
Описание класса Vector2d смотрите в разделе Вектора на плоскости.
|