заставить карту высот Мандельброта оставаться на одном месте

у меня есть небольшая проблема, когда мой набор Мандельброта представлен в виде матрицы карты высот, когда каждая ячейка содержит количество итераций, которые потребовались одной точке для достижения бесконечности или меньше.
в конце печатается 3d-модель. моя проблема возникает, когда я быстро увеличиваю масштаб и начинаю видеть, что весь набор плавает (поскольку количество итераций увеличивается для каждого пикселя).
есть ли способ заставить модель оставаться на 0 (ось Y), но по-прежнему позволять ему расти, поскольку каждая точка получает разное количество итераций?

я пытался найти точку, которая требует наименьшего количества итераций (и, по сути, самую низкую точку в наборе), и вычитает ее из всех точек, но это не сработало (поскольку количество итераций изменяется каждый процесс масштабирования, он сделал установите, например, переход от значения 5 к 100).


person igal k    schedule 03.02.2012    source источник


Ответы (1)


Эта проблема возникает и с двумерными фрактальными картами: цветовое представление escape-значения «сдвигается». Если вы масштабируете с коэффициентом 10, каждая 10-я точка должна быть точкой из немасштабированной версии, но по мере увеличения итераций вместе с масштабированием эти точки не будут одинаковыми.

Решение (для меня это было) состоит в том, чтобы найти самый большой масштаб, которого вы хотите достичь, найти соответствующий коэффициент итерации для этого уровня масштабирования (для точных расчетов) и применять этот коэффициент итерации каждый раз, даже для уровня масштабирования 0.

Это замедлит вычисление, в моем случае мне пришлось повторять каждую точку 5000 раз независимо от уровня масштабирования.

person karatedog    schedule 01.04.2012
comment
Спасибо за ваш ответ, мне удалось решить эту проблему, просто перебирая набор (матрицу высот), а затем вычитая наименьшую высоту из всех других точек - таким образом, моя ось Y всегда относительно 0. Моя первоначальная проблема возникла как результат работы с плохими коэффициентами. - person igal k; 02.04.2012
comment
Я помешан на точности во фракталах (некоторые эксперименты требуют, чтобы я был таким :-), и я уверен, что расчетные значения - для определенных точек - могут измениться в зависимости от вашего решения во время масштабирования. Представьте себе точку, которая не уходит в бесконечность при повторении 100 раз, но достигает при повторении 150 раз. Эта точка изменится, когда увеличена карта (обычно это происходит на границе множества Мандельброта, черной или плоской области). Ваша ось Y может быть относительно 0, но два соседних пикселя могут изменить свою относительную разницу в высоте. Но вам не нужно быть фанатом точности :-) - person karatedog; 02.04.2012
comment
я не уверен, почему, по вашему мнению, это все еще вызывает проблемы, мое решение меняет измененные значения, соотношение и точность между всеми ячейками сохраняются. это похоже на использование функции glTranslated() в OpenGL - person igal k; 02.04.2012