我试着制作这个Mandelbrot分形发生器,但当我运行它时,我得到了一个像圆一样的输出。不知道为什么会这样。我想我的颜色可能有问题,但即使如此,形状也不正确。
public static Bitmap Generate(
int width,
int height,
double realMin,
double realMax,
double imaginaryMin,
double imaginaryMax,
int maxIterations,
int bound)
{
var bitmap = new FastBitmap(width, height);
var planeWidth = Math.Abs(realMin) + Math.Abs(realMax); // Total width of the plane.
var planeHeight = Math.Abs(imaginaryMin) + Math.Abs(imaginaryMax); // Total height of the plane.
var realStep = planeWidth / width; // Amount to step by on the real axis per pixel.
var imaginaryStep = planeHeight / height; // Amount to step by on the imaginary axis per pixel.
var realScaling = width / planeWidth;
var imaginaryScaling = height / planeHeight;
var boundSquared = bound ^ 2;
for (var real = realMin; real <= realMax; real += realStep) // Loop through the real axis.
{
for (var imaginary = imaginaryMin; imaginary <= imaginaryMax; imaginary += imaginaryStep) // Loop through the imaginary axis.
{
var z = Complex.Zero;
var c = new Complex(real, imaginary);
var iterations = 0;
for (; iterations < maxIterations; iterations++)
{
z = z * z + c;
if (z.Real * z.Real + z.Imaginary * z.Imaginary > boundSquared)
{
break;
}
}
if (iterations == maxIterations)
{
bitmap.SetPixel(
(int)((real + Math.Abs(realMin)) * realScaling),
(int)((imaginary + Math.Abs(imaginaryMin)) * imaginaryScaling),
Color.Black);
}
else
{
var nsmooth = iterations + 1 - Math.Log(Math.Log(Complex.Abs(z))) / Math.Log(2);
var color = MathHelper.HsvToRgb(0.95f + 10 * nsmooth, 0.6, 1.0);
bitmap.SetPixel(
(int)((real + Math.Abs(realMin)) * realScaling),
(int)((imaginary + Math.Abs(imaginaryMin)) * imaginaryScaling),
color);
}
}
}
return bitmap.Bitmap;
}
这里有一个错误:
var boundSquared = bound ^ 2;
这应该是:
var boundSquared = bound * bound;
^
运算符表示xor
。
对于复杂变量,我使用以下复杂类文件。 下面的java代码是Mandelbrot集合的迭代计算器示例。 提前谢谢!
好的,这里有一个奇怪的问题,我有问题(用gcc btw编译) 下面是用于命令提示的Mandelbrot分形生成器的源代码。我以前做过这项工作,我想加快自己的测试速度,看看我能以多快的速度生成命令提示符中实际生成Mandelbrot分形所需的代码。我经常这样做是为了给自己找点乐子 不管怎样,我遇到了一个新问题,我不太明白问题是什么。当分形呈现时,无论我设置了多少次迭代或什么转义值,它都将始终显示为椭
为了理解我在某个地方读到的一句话,我真的在挠头:“我们在分形中放大的越多,我们最可能需要执行的迭代就越多”。 到目前为止,我还没有找到任何数学/学术论文证明这一说法。我还设法找到了一个计算mandelbrot集的小代码,取自这里:http://warp.povusers.org/Mandelbrot/但是,我们无法理解缩放是如何影响迭代的。 谢谢!
我开始制作一个mandelbrot集分形查看器。在放大分形时,我遇到了很多问题。如果您尝试缩放,查看器将刚好靠近中心。我已经尽我所能去理解这个困境。我怎样才能放大我的分形,当我放大时,它会放大屏幕的中心,而不是分形的中心?
我在Python中使用PIL模块制作了一个Mandelbrot分形。现在,我想做一个放大到一点的GIF。我在网上看过其他代码,但不用说,我不明白,因为我使用的模式有点不同(我使用的是类)。 我知道要放大我需要改变比例。。。但我显然不知道如何实施它。
我见过许多mandelbrot图像生成器绘制mandelbrot的低分辨率分形,然后不断改进分形。这是一个平铺算法吗?以下是一个例子:http://neave.com/fractal/ 更新:我发现关于递归细分和计算mandelbrot:http://www.metabit.org/~rfigura/figura fractal/math。html。也许可以使用kd树来细分图像? 更新2:http