Покрытие объекта примитивами (прямоугольники, эллипсы - без поворотов)

  • Автор темы Автор темы quux
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

quux

Участник
Топикстартер
Сообщения
33
Реакции
0
Всем добрый день!

Исходные данные: изображения предметов (фигуры окружающего мира (животные, транспорт и т.п.)

Задача: на новом слое покрыть каждое изображение (по крайним точкам контура) прямоугольниками либо эллипсами.

X76GXlly.png


Необходимо знать, возможно ли такое реализовать с помощью скрипта или нет.
 
Исходные данные: ...
Задача:...
Ну так действуйте! '))'

У каждого объекта есть свойства controlBounds или, как вам больше нравится, geometricBounds
Берете их и рисуете прямоугольник по этим координатам.
 
Понятно, "покурю" эти свойства, но есть одна особенность. Не каждый объект целесообразно покрывать одним прямоугольником или одним эллипсом. Необходимо чтобы общий контур примитивов был как можно ближе к контуру объекта.
 
Это как? Каждый объект можно покрыть прямоугольником, согласно условию в стартовом топике, однозначным способом. "Как можно ближе" - условие оптимизационное. Налицо противоречие - или условие неправильное или неправильно сформулирована исходная постановка...
 
На приведенном примере:

eSdCHt7U.png


Если покрыть землянику одним прямоугольником то будет две пустые области в верхнем правом и в нижнем левом углу. А если двумя прямоугольниками, как на примере, то покрытие будет оптимальным.

Еще один пример:

cikSYVU6.png
 
А если двумя прямоугольниками, как на примере, то покрытие будет оптимальным.
Теоретически, оптимальным будет покрытие, когда все вложенные подобъекты будут описаны прямоугольниками. Разумеется, при этом выкинуть все прямоугольники, целиком лежащие внутри области.

Еще один пример:
Этот пример вообще под условие стартового топика не подходит. Курите квадратуру криволинейной фигуры.
 
Ну, дак вывести формулу данной аппроксимации и кодить ;)
Любопытно, а ради чего эти мучения?
 
Теоретически, оптимальным будет покрытие, когда все вложенные подобъекты будут описаны прямоугольниками.
Согласен, так будет оптимально с точки зрения условия "как можно ближе к границе объекта", но необходимо учитывать толщину пальца при касании экрана :) Поэтому как вы и говорили "Как можно ближе" - условие кастомизационное.
 
Тогда проще и правильнее сделать общий контур и проверять на нахождение точки касания внутри него
 
Статус
Закрыто для дальнейших ответов.