У меня есть изображение, которое не является квадратом (размер m x n). Кроме того, его размеры не относятся к основанию 2 (т.е. не = 2 ^ k & n не = 2 ^ k). Я справился с этим, поместив изображение в больший квадрат (следующая степень двух), используя следующее:
int width = (int)Math.ceil(Math.pow(2, Math.log(img.width)/Math.log(2)));
int height = (int)Math.ceil(Math.pow(2, Math.log(img.height)/Math.log(2)));
В зависимости от того, что дает наибольшее измерение, я устанавливаю квадрат для рисования в максимальном измерении, то есть:
if (img.width > img.height) {
// draw width * width square
}
if (img.height > img.width) {
// draw height * height square
}
Проблема:
Теперь дерево quadtree выглядит совершенно иначе, поскольку в нем хранятся все узлы без изображений в дереве. Это, очевидно, влияет на предполагаемые данные изображения (то есть минимальную / максимальную глубины) и саму форму дерева. У меня вопрос, эффективно ли я делаю это, и если да, то как мне не хранить данные, которые не принадлежат изображению? Если это не лучший способ нарисовать неквадратное изображение, может ли кто-нибудь указать мне правильное направление? Кажется, что все статьи в Google слишком глубоки для моих целей.