Draw a sphere: Difference between revisions
Content added Content deleted
(Added Julia language) |
|||
Line 2,181: | Line 2,181: | ||
One way to view the output as an image is to point your browser to the generated SVG. |
One way to view the output as an image is to point your browser to the generated SVG. |
||
=={{header|Julia}}== |
|||
{{trans|C}} |
|||
<lang julia># v0.6 |
|||
function draw_sphere(r, k, ambient, light) |
|||
shades = ('.', ':', '!', '*', 'o', 'e', '&', '#', '%', '@') |
|||
for i in floor(Int, -r):ceil(Int, r) |
|||
x = i + 0.5 |
|||
line = IOBuffer() |
|||
for j in floor(Int, -2r):ceil(2r) |
|||
y = j / 2 + 0.5 |
|||
if x ^ 2 + y ^ 2 ≤ r ^ 2 |
|||
v = normalize([x, y, sqrt(r ^ 2 - x ^ 2 - y ^ 2)]) |
|||
b = dot(light, v) ^ k + ambient |
|||
intensity = ceil(Int, (1 - b) * (length(shades) - 1)) |
|||
if intensity < 1 |
|||
intensity = 1 end |
|||
if intensity > length(shades) |
|||
intensity = length(shades) end |
|||
print(shades[intensity]) |
|||
else |
|||
print(' ') |
|||
end |
|||
end |
|||
println() |
|||
end |
|||
end |
|||
light = normalize([30, 30, -50]) |
|||
draw_sphere(20, 4, 0.1, light) |
|||
draw_sphere(10, 2, 0.4, light)</lang> |
|||
=={{header|Kotlin}}== |
=={{header|Kotlin}}== |