我制作了一个程序来计算mandelbrot集中的点。对于不属于mandelbrot集的点,我会跟踪起始点发散多少次迭代到幅度大于2的位置。基本上对于不在mandelbrot集中的每个点,我都有一个计数器,它的速度有多快在1到256的范围内发散。想要做的就是根据它的发散速度给每个点一个颜色。例如,在255次迭代中发散的点可以是白色,并且它发散的越快,它被着色的越多。我已经做了一个简单的调整,其中分歧超过20步的发散点被涂成红色,10-19步中发散的那些是蓝色的,而在5-9步中发散的是黄色的,它看起来像这样。 / p>
现在我无法对所有可能的255种分歧进行此操作。如何制作一个毕业比例并在Matlab中实现它。在此先感谢您的帮助。如果有人想知道更多,请询问。谢谢!
编辑我很抱歉,但图片似乎无效。基本上我需要它。我正在绘制点,每个点分配1到255之间的值,我希望颜色根据分配给它的值逐渐改变。谢谢!
答案 0 :(得分:5)
在Matlab中绘制mandelbrot集的简单方法如下
function mandelbrot(n, niter)
x0 = -2; x1 = 1;
y0 = -1.5; y1 = 1.5;
[x,y] = meshgrid(linspace(x0, x1, n), linspace(y0, y1, n));
c = x + 1i * y;
z = zeros(size(c));
k = zeros(size(c));
for ii = 1:niter
z = z.^2 + c;
k(abs(z) > 2 & k == 0) = niter - ii;
end
figure,
imagesc(k),
colormap hot
axis square
这只是跟踪数组k
中的发散之前的迭代次数,并使用imagesc
使用线性色标来绘制它。结果是
>> mandelbrot(800, 40)
答案 1 :(得分:1)
图像不在链接中,我不知道Matlab,但是你不能让每个点的颜色成为它的发散函数吗?许多工具允许您指定RGB值,例如0-255。您是否可以输入所有三个RGB值(或您使用的任何颜色标度)的偏差来获得灰色阴影?即RGB(20,20,20)
答案 2 :(得分:0)
我对代码进行了一些改进,现在将在给定(x,y)的特定起点和起始位置的情况下运行。对于那些希望进一步放大的人。
function mandelbrot(n, n2, x0, y0, g)
x1 = x0 - g; x2 = x0 + g;
y1 = y0 - g; y2 = y0 + g;
[x,y] = meshgrid(linspace(x1, x2, n), linspace(y1, y2, n));
c = x + 1i * y;
z = zeros(size(c));
k = zeros(size(c));
for ii = 1:n2
z = z.^2 + c;
k(abs(z) > 2 & k == 0) = n2 - ii;
end
figure,
imagesc(k),
colormap hot
axis square
end