One of the first algorithms is the Robertson algorithm; originally intended for the solution of visibility of a group of convex polyhedrons. This algorithm subsequently processes individual edges of the body. It tests every edge, whether it is not overlapped by another body. If it is hidden only partially, then this edge is split into two parts (one hidden, the other unhidden). Every unhidden part becomes a new tested edge. You can find this algorithm in [2].

This algorithm works in the area of objects and is based on the fact that every edge is a conjunction of two polygons.
The first step is to remove invisible polygons. First, we split polygons into two groups: **near**
(potentially visible) and **reverse** (invisible). The near polygons have an obtuse angle with the projection direction;
and the reverse ones have an acute angle with the projection direction. In the following step, we split the edges
into three types, according to which polygons they cross:

First type - a conjunction of two reverse polygons, called the invisible edge

Second type - a conjunction of the near polygon and the reverse polygon, called the visible contour edge.

Third type - a conjunction between two near polygons, called the potential visible edge.

The algorithm is given in [1].

Copyright (c) 1999-2019 Juraj Štugel. www.netgraphics.sk