Сложность масштабирования Мандельброта - PullRequest
1 голос
/ 23 ноября 2011

Я не уверен, к какой области относится этот вопрос, но я попробую. Я пытаюсь вычислить множество Мандельброта. Большая разница в том, что мой результат - 3D-модель. Расчет набора сделан точно, но как только я пытаюсь увеличить масштаб до точки x, y (которая расположена на 2D-плоскости), он не работает должным образом. Основная идея здесь заключается в извлечении следующей точки масштабирования, я смогу рассчитать новые границы моего набора. Когда

xru,yru = top right point of the set
xld yld = buttom left button
direction = 1 = zoom in
constVal = the original size of the set : 2X2
constVal[0] = xru , yru (at beginning)
constVal[1] = xld, yld (at beginning)

результат увеличения до неизвестной точки. Я думаю, что что-то не так с расчетом. Я пытался сделать следующее:

int direction = 1;
double ratiox = foundPointOnHost.x / ((constVal[1][0] - constVal[0][0]));
double ratioy = foundPointOnHost.z / ((constVal[1][1] - constVal[0][1]));
double xrange = xru-xld;
double yrange = yru-yld;

xld += direction*0.01*ratiox*xrange;
xru -= direction*0.01*(1.-ratiox)*xrange;
yld += direction*0.01*(1.-ratioy)*yrange;
yru -= direction*0.01*ratioy*yrange; 

РЕДАКТИРОВАТЬ: я рассмотрел некоторые примеры, которые вы мне дали, но я до сих пор не нашел подходящего ответа, который бы наилучшим образом подходил к моей ситуации.

1 Ответ

1 голос
/ 28 ноября 2011

Ну, мне удалось найти правильное решение.Поскольку все оси повернуты, я написал следующее:

double ratiox = foundPointOnHost.x / (constVal[1][0] - constVal[0][0]);
double ratioy = 1-foundPointOnHost.z / (constVal[1][1] - constVal[0][1]);
double xrange = xru-xld;
double yrange = yru-yld;
...