2013-09-10 4 views
2

Я пытаюсь вычислить переменную на основе уровня масштабирования.Вычислить уровень масштабирования плиток

Например, у меня есть сетка из 4x4 на уровне масштабирования 1. Теперь я увеличиваю масштаб, как только он станет 8 * 8 на уровне масштабирования 2. Увеличьте масштаб еще раз, и это будет 16 * 16 при уровне увеличения 3. и т. д.

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

Итак, мой вопрос заключается в том, как рассчитать ширину и высоту уровня 2 и 3 уровня масштабирования и только с этими двумя номерами и уровнем масштабирования?

Заранее спасибо.

+1

Вы всегда удваиваете стороны на каждом уровне масштабирования? Вам нужно лучше описать, как выглядят уровни увеличения 2 и 3. – jmstoker

+0

Уровень 4 должен быть 32 * 32, если уровень масштабирования 1 равен 4x4. Если уровень масштабирования 1, где 5x4, он станет 40 * 32. Уровни масштабирования 2, 3, 4 и т. Д. Должны быть как-то рассчитаны с уровня масштабирования 1. – sgtfrankieboy

+1

Вы пишете это для определенного языка? C++, Java и т. Д. Звучит так, что вы просто удваиваете каждую сторону за уровень, поэтому цикл 'for' будет работать, но трудно дать точное решение без дополнительной информации. – jmstoker

ответ

1

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

var x = this.data.Size.X; 
var y = this.data.Size.Y; 

x = x << (zoom-1); 
y = y << (zoom-1); 
0

Благодаря jmstoker я понял, как заставить его работать правильно

var x = this.data.Size.X; 
var y = this.data.Size.Y; 
for (var i = 1; i < zoom; i++) { 
    x += x; 
    y += y; 
} 

Я просто получить количество плиток на каждой стороне и пройти через количество уровней масштабирования без учета 1-го уровня и добавление счетчика для себя для каждого уровня масштабирования.

Смежные вопросы