gpt4 book ai didi

java - 在 Android 上为 Mandelbrot 集着色的问题

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:48 25 4
gpt4 key购买 nike

我在为 Mandelbrot 集着色时遇到了问题。这是我的 onDraw() 程序:

@Override
protected void onDraw(Canvas canvas) {
g = Math.round(60+(iter_count*(2500/16)));
iter_count++;
for(int xx = 1; xx <= xMax; xx++) {
for(int yy = 1; yy <= yMax; yy++) {
schirmzupap(ar,br,bi,ai,xx,yy,xMax,yMax);
n = 1;
zr0 = zr;
zi0 = zi;
while ((n<g) && (zr*zr+zi*zi<4)) {
zrh = zr;
zr = (zr*zr)-zi*zi+zr0;
zi = zrh*zi+zi*zrh+zi0;
n++;
}
if (n==g) { //[Coloring]
paint.setARGB(255,0,0,0);
}
if ((n/g) < (1/2)) {
paint.setARGB(255,Math.round((n/g)*255),0,0);
}
if (((n/g) < 1) && ((n/g) > 1/2)) {
paint.setARGB(255,255,Math.round((n/g)*255),Math.round((n/g)*255));
}
canvas.drawPoint(xx, yy, paint); //[/Coloring]
}
}
}

这是它在 Java Android 模拟器中的样子:http://i55.tinypic.com/14ctqi8.png

这就是我想要的样子:http://i54.tinypic.com/nh1aqe.png是用Delphi写的,但是着色部分其实是一样的:

if n=g then image1.canvas.Pixels[xx,yy]:=RGB2TColor(0,0,0);
if (n/g)<(1/2) then image1.canvas.Pixels[xx,yy]:=RGB2TColor(Round((n/g)*255),0,0);
if ((n/g)<(1)) AND ((n/g)>(1/2)) then image1.canvas.Pixels[xx,yy]:=RGB2TColor(255,Round((n/g)*255),Round((n/g)*255));

有人可以帮我吗?你好,

亨利

最佳答案

  1. 如果有帮助,请不要在 onDraw 中进行复杂的计算。
  2. 一般来说,在这些情况下使用 Math.floor() 而不是四舍五入,因为您真的不想在这里向上舍入。
  3. 对于着色算法的第二个和第三个条件,使用 else if 会更清楚。似乎第三个胜过第二个……?
  4. (这才是真正的问题 :-) 我打赌你将 ng 声明为整数!除法将是整数除法,除非您这样做:

转换为双数

(n/(double)g)

记住整数除法,例如25000/25600== 0,因此所有这些像素将得到 (255,0,0)

关于java - 在 Android 上为 Mandelbrot 集着色的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7003986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com