首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定mandelbrot缩放的坐标

确定mandelbrot缩放的坐标
EN

Stack Overflow用户
提问于 2013-04-23 04:29:56
回答 1查看 1.9K关注 0票数 0

我有一组曼德尔布洛特的图像我想放大。围绕中心坐标、mandelbrot大小和缩放级别计算mandelbrot。最初的mandelbrot位于real=-0.6和im=0.4附近,在real和im中的大小都是2。

我想要能够点击图像中的一个点,并计算一个新的点,放大该点

包含它的窗口是800x800px,所以我认为这会使右下角的点击等于real=0.4的中心,im=-0.6,左上角的点击是im=1.4 =-1.6

我是这样计算的:

对于真实的值

800a+b=0.4 => a=0.0025

0a+b=-1.6 => b=-1.6

对于假想值

800c+d=-0.6 => c=-0.0025

0c+d=1.4 => d=1.4

但是,如果我继续使用mandelbrot大小为2,缩放级别为2,这将不起作用。我是否遗漏了一些关于缩放级别的坐标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-27 23:50:33

我在放大我的C# Mandelbrot时遇到了类似的问题。我的解决方案是计算从点击位置到中心的差值,以百分比为单位,乘以距中心的最大单位(宽度/缩放* 0.5,宽度=高度,缩放=n* 100),然后将其添加到当前值中。所以我的代码是这样的(假设我从点击中得到了sxsy作为参数):

代码语言:javascript
复制
        double[] o = new double[2];

        double digressLRUD = width / zoom * 0.5; //max way up or down from the center in coordinates

        double shiftCenterCursor_X = sx - width/2.0; //shift of cursor to center
        double shiftCenterCursor_X_percentage = shiftCenterCursor_X / width/2.0; //shift in percentage
        o[0] = x + digressLRUD * shiftCenterCursor_X_percentage; //new position

        double shiftCenterCursor_Y = sy - width/2.0;
        double shiftCenterCursor_Y_percentage = shiftCenterCursor_Y / width/2.0;
        o[1] = y - digressLRUD * shiftCenterCursor_Y_percentage;

这是可行的,但您必须更新缩放(我用它乘以2)。

另一个点是将选定的中心移动到图像的中心。我是通过一些计算来实现的:

代码语言:javascript
复制
        double maxRe = width / zoom;
        double centerRe = reC - maxRe * 0.5;

        double maxIm = height / zoom;
        double centerIm = -imC - maxIm * 0.5;

这将为您带来坐标,您必须通过您的算法,以便它将渲染选定的地方。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16156152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档