我一直试图生成Mandelbrot集的图像,但显然是非常错误的。这是此代码生成的图像:http://puu.sh/csUDd/bdfa6c1d98.png 我正在使用Scala和处理。着色技术非常简单,但我不认为通过观察图像的形状是主要问题。谢谢。
for (i <- 0 to width){ // 0 to 700
for (j <- 0 to height){ // 0 to 400
val x = i/200.toDouble - 2.5 // scaled to -2.5, 1
val y = j/200.toDouble - 1 // scaled to -1, 1
val c = new Complex(x, y)
val iterMax = 1000
var z = c
var iterations = 0
var inSet = false
while (z.abs < 2 && iterations < iterMax) {
z = z.squared.plus(c)
iterations += 1
if (iterations == iterMax) {
inSet = true
}
}
// stroke() defines the current rgb color.
// If the point is in the set, it is coloured black.
// If not, the point is coloured as such: (iterations^5 mod 255, iterations^7 mod 255, iterations^11 mod 255)
// I use 5, 7 and 11 for no specific reason. Using iterations alone results in a black picture.
if (inSet) stroke(0, 0, 0)
else stroke(pow(iterations, 5).toInt % 255, pow(iterations, 7).toInt % 255, pow(iterations, 11).toInt % 255)
// Finally, draw the point.
point(i, j)
}
}
这里是复数的类
class Complex(val real: Double, val imag: Double) {
def squared = new Complex(real*real - imag*imag, 2*real*imag)
def abs = sqrt(real*real + imag*imag)
def plus(another: Complex) = new Complex(real + real, imag + imag)
}
答案 0 :(得分:4)
您的plus
方法无法添加another
,我认为应该是
def plus(another: Complex) = new Complex(real + another.real, imag + another.imag)
答案 1 :(得分:0)
好的,我明白了。复数类中有一个错误。
def plus(另一个:复杂)= new Complex(真实+真实,想象+想象) ---&GT; def plus(另一个:复杂)= new Complex(this.real + another.real,this.imag + another.imag)
这是任何有兴趣的人的结果 http://puu.sh/csYbb/b2a0d882e1.png