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]) = { |
|||
val b = math.pow(dot(light, vec), k) + ambient |
|||
if (b <= 0) shades.length - 2 |
|||
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))))) |
|||
} else ' ').mkString) |
|||
} |
|||
} |
} |
||