Graphics Reference
In-Depth Information
while
notdone
do
begin
aPt.x := (Pt1.x + Pt2.x)/2.0;
aPt.y := (Pt1.y + Pt2.y)/2.0;
aC := ExtendedCsCode (aPt);
if
TwoBitCase (aC)
then
begin
if
aC = endC
then
Pt2 := aPt
else
begin
if
aC = startC
then
Pt1 := aPt
else
notdone :=
false
end
end
else
begin
if
(aC
and
endC) π 0
then
aC := endC + Tcc[startC
and not
(TWOBITS)]
else
aC := startC + Tcc[endC
and not
(TWOBITS)];
notdone :=
false
;
end
end
end
; { BothAreTwoBits }
procedure
OneBitEndPoint ()
{ The line has been rejected and we have a 1-bit endpoint. }
if
TwoBitCase (startC)
then
begin
if
(startC
and
endC) = 0
then
endC := startC + Tcc[endC];
end
else
begin
endC := endC
or
startC;
if
Tcc[endC] = 1
then
endC := endC
or
TWOBITS;
end
; { OneBitEndPoint }
Algorithm 3.3.4.2.
Continued