Куда бы я пошел искать алгоритмы, которые принимают 2d-сетку значений, которые являются 0 или 1 в качестве входных данных, а затем идентифицируют все возможные неперекрывающиеся прямоугольники?Как разделить область, состоящую из маленьких квадратов, в большие прямоугольники?
В более практическом объяснении: Я рисую сетку, представленную рядом квадратов, и я хочу найти способ объединить как можно больше смежных квадратов в прямоугольники, чтобы сократить время тратятся на велосипеде по каждому квадрату и рисуют его.
Максимальная эффективность не требуется, скорость важнее.
Addendum: Очевидно, что я ищу, это техника под названием Tesselation. Теперь мне нужно только найти хорошее описание для этого конкретного случая.
Приложение 2: Граница «1» квадратов будет нерегулярной и в некоторых случаях даже не связана, так как распределение квадратов «1» будет полностью случайным. Мне нужны эти неправильные формы, которые нужно идентифицировать и разделять на обычные прямоугольники.
Правильный ответ: Чтобы получить наилучший баланс между скоростью и эффективностью, оптимально использовать данные сетки, чтобы заполнить квад-дерево каждым узлом, имеющим значение состояния либо пустым/частично заполненным/заполненным.
«Максимальная эффективность не требуется, скорость более важный." -А? Я предполагаю, что вы имеете в виду «Я не хочу абсолютное минимальное количество прямоугольников, просто что-то хорошее, быстро» ...? – 2008-11-02 17:11:05
Ой, и доказали ли вы, что езда на велосипеде по каждому квадрату - это узкое место вашей производительности? – 2008-11-02 17:11:54
Что касается аппроксимации, да, это. В основном я ищу наиболее сбалансированное решение по эффективности и скорости. Кроме того, да, я на 100% уверен, что велосипед является узким местом из-за того, что Perl намного медленнее, чем сам OpenGL. – Mithaldu 2008-11-02 17:15:54