Graphics Reference
In-Depth Information
procedure
DrawLine (
integer
x
0
, y
0
, z
0
, x
1
, y
1
, z
1
)
{ We assume that x1 - x0 , y1 - y0 , z1 - z0 ≥ 0 . The procedure Draw (x,y,z) is
assumed to draw a voxel at location (x,y,z) on the three-dimensional raster. }
begin
integer
dx, dy, dz, d
xy
, d
xz
, d
zy
, num, i, x, y, z;
dx := x1 - x0; dy := y1 - y0; dz := z1 - z0;
d
xy
:= dy - dx; d
xz
:= dz - dx; d
yz
:= dz - dy;
num := dx + dy + dz;
i := 0; x := x0; y := y0; z := z0;
Draw (x, y, z);
while
i < num
do
begin
if
d
xy
< 0
then
begin
if
d
xz
< 0
then
begin
x := x + 1;
d
xy
:= d
xy
+ 2*dy; d
xz
:= d
xz
+ 2*dz;
end
else
begin
z := z + 1;
d
xz
:= d
xz
- 2*dx; d
yz
:= d
yz
- 2*dy;
end
end
else
begin
if
d
yz
< 0
then
begin
y := y + 1;
d
xy
:= d
xy
- 2*dx; d
yz
:= d
yz
+ 2*dy;
end
else
begin
z := z + 1;
d
xz
:= d
xz
- 2*dx; d
yz
:= d
yz
+ 2*dz;
end
end
;
Draw (x, y, z);
end
end
;
Algorithm 10.4.1.2.
The 6-connected tripod line drawing.