Graphics Reference
In-Depth Information
for
e in E
do
begin
fc := PseudoFacetItDefines (e); { Delete e and possibly other edges from E }
if
NotNull (fc)
then
Add fc to F;
end
end
;
pseudofacet function
PseudoFacetItDefines (
edge
e0)
begin
pseudofacet
fc;
face
f, lastf;
edge
e;
boolean
more;
Delete e0 from E;
Initialize fc to z, the intersection of e0 with x-y plane;
for each
face f adjacent to e0
do
flag the e0 in Exs[f] as SEEN;
(lastf,e) := face lastf is adjacent to e0 and edge e in Exs[lastf] is not yet SEEN;
more :=
true
;
while
more
do
begin
Delete e from E;
Add intersection z of e with x-y plane to end of fc;
for each
face f adjacent to e
do
flag the e in Exs[f] as SEEN;
if
some face f (π lastf) adjacent to e has edge (π e) in Exs[f] marked SEEN
then
more :=
false
else
begin
lastf := face adjacent to e;
e is edge in Exs[lastf];
end
;
end
;
Delete all references to edges in all Exs[] which were marked as SEEN;
return
(fc);
end
;
Algorithm 13.4.3.1.
Continued