Draw a sphere: Difference between revisions

m
Line 5,088:
% Absolute dot product of x and y
function dot (x, y : array 1 .. 3 of real) : real
result abs (x (1) * y (1) + x (2) * y (2) + x (3) * y (3))
end dot
 
% Vector normalization
procedure normalize (var v : array 1 .. 3 of real)
const norm := sqrt (v (1) * v (1)*2 + v (2) * v (*2) + v (3) * v (3)*2)
for i : 1 .. 3
v (i) := v (i) / norm
end for
end normalize
Line 5,102:
procedure drawSphere (radius : real, k : int, lightsource : array 1 .. 3 of real, brightness : real)
const diameter := 2.0 * radius
for i : roundfloor (-radius) .. roundceil (radius)
var x := i + 0.5
for j : roundfloor (-diameter) .. roundceil (diameter)
var y := j / 2 + 0.5
 
if x**2 + y**2 <= radius**2 then
var vec : array 1 .. 3 of real
vec (1) := x; vec(2) := y; vec(3) := sqrt (radius**2 - x**2 - y**2)
vec (2) := y
vec (3) := sqrt (radius**2 - x**2 - y**2)
normalize (vec)
 
Line 5,213 ⟶ 5,211:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
</pre>
 
Anonymous user