Draw a sphere: Difference between revisions

Content added Content deleted
Line 4,089: Line 4,089:
}
}


for (i <- math.floor(-r).toInt to Math.ceil(r).toInt; x = i + .5) {
for (i <- math.floor(-r).toInt to Math.ceil(r).toInt; x = i + .5)
println(
println(
(for (j <- math.floor(-2 * r).toInt to Math.ceil(2 * r).toInt; y = j / 2.0 + .5)
(for (j <- math.floor(-2 * r).toInt to Math.ceil(2 * r).toInt; y = j / 2.0 + .5)
yield if (x * x + y * y <= r * r) {
yield if (x * x + y * y <= r * r) {


def intensity(vec: Array[Double]) = {
def intensity(vec: Array[Double]) = {
val b = math.pow(dot(light, vec), k) + ambient
val b = math.pow(dot(light, vec), k) + ambient
if (b <= 0) shades.length - 2
if (b <= 0) shades.length - 2
else math.max((1 - b) * (shades.length - 1), 0).toInt
else math.max((1 - b) * (shades.length - 1), 0).toInt
}
}


shades(intensity(normalize(Array(x, y, scala.math.sqrt(r * r - x * x - y * y)))))
shades(intensity(normalize(Array(x, y, scala.math.sqrt(r * r - x * x - y * y)))))
} else ' ').mkString)
} else ' ').mkString)
}
}
}