我对C#还是很陌生,在尝试对Mandelbrotset进行编程和可视化时遇到了问题。
我创建了一个400 x 400的面板,并希望使用它来绘制集合。我希望图形在两个轴上都从-2变为2,所以我使用的比例是0.01。查看代码时,我认为paint方法应该可以工作;坐标以看起来正确的方式转换。问题在于,运行时图形未完全显示在面板上。 (0,0)在右下角的某个位置,删除了该角的大部分坐标。
以下是用于在面板上绘制图形的功能。用这种方式编码坐标时是否出错?还是我误解了面板中坐标的工作方式?
for (int xco =0; xco<400; xco++)
{
for (int yco=0; yco<400; yco++)
{
double x = (xco - 200) * scale;
double y = (yco - 200) * scale;
int mandel = 0;
double fx = x, fy = y;
double distance = 0;
while ((mandel<max) && (distance<2))
{
double fx1 = fx;
fx = fx * fx - fy * fy + x;
fy = 2 * fx1 * fy + y;
distance = Math.Sqrt(fx * fx + fy * fy);
mandel++;
}
if (mandel%2==1)
pea.Graphics.FillRectangle(Brushes.White, xco, yco, xco + 1, yco + 1);
else
pea.Graphics.FillRectangle(Brushes.Black, xco, yco, xco + 1, yco + 1);
}
}