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.
Search WWH ::




Custom Search