Опять же, извиняюсь за плохой заголовок - очень трудно описать.
Я использовал тег Java, так как это язык, который я использую для этого проекта, но это действительно применимо к любому языку.
Я буду использовать упрощенный пример для ясности.
Допустим, я показываю графику, которая может быть "увеличена", и я могу получить доступ к плавающей запятой между 0 и 1, котораяпредставляет масштаб.
Теперь предположим, что есть разные версии этого же рисунка, чем больше «крупным планом», тем точнее уровень детализации, а в более отдаленных версиях явно видны только важные функции..
Каждая из этих версий в два раза меньше следующей более крупной версии.Самый крупный план был бы эквивалентен уровню масштабирования 1.
Может быть любое количество версий, каждая из которых представляет вид, вдвое меньший, чем предыдущий.
Так что, когдапользователь увеличивает масштаб изображения, мне нужно проверить, достигли ли они точки, когда было бы лучше отображать другую версию.Если бы они не достигли этой точки, я бы просто показал уменьшенную (уменьшенную) версию предыдущего уровня.
Например, скажем, есть 5 разных версий (хотя может быть любое число), вмассив, от наименьшего к наибольшему (хотя я мог бы изменить это, если бы это было проще), поэтому версии [4] - самые большие, а версии [0] - самые маленькие.
Например,
- при увеличении 1, показать версии [4]
- при увеличении 0,5, показать версии [3]
- при 0,25, показать версии [2]
- при0.125, показать версии [1]
- в 0.0625, показать версии [0]
Поскольку нет версии, доступной для половины версий [0], я все равно покажу версии [0] но в половину размера.Если бы была добавлена другая версия, она показала бы, когда общий масштаб (увеличение) был бы равен 0,03125 или меньше.
Для интервалов между масштабами я должен показать следующее наибольшее изображение, но с уменьшенным размером.
Например,
- При увеличении 1 я бы показал наибольший (версии [4]), немасштабированный.
- При увеличении 0,8 по-прежнему отображаетсянаибольший, но в масштабе 0,8
- При увеличении 0,5, показывать версии [3] без масштабирования
- При увеличении 0,3 показывать версии [3] в масштабе 0,6
- приувеличение 0,2, показать версии [2] в масштабе 0,8
- При увеличении 0,1 показать версии [1] в масштабе 0,8
Я мог бы, вероятно, взломать это вместе с условиямиили связывание и Math.abs, и т. д., но я бы поспорил, что есть очень элегантный и эффективный способ справиться с этим с помощью чистой математики - это просто над моей головой.Если нет, то любые предложения относительно подхода, использующего чистый, предсказуемый код, также приветствуются.
Повторно - цель состоит в том, чтобы найти версию (индекс массива) версии для показа, а такжеОтносительный масштаб, в котором он должен отображаться, полностью основанный на «глобальном» масштабе.
TYIA.