The visibility of points of a surface S is tested by the procedure check. There are two methods in Check, namely S.Visibility(P;Vis), which checks whether a point P on S is invisible with respect to S in which case Vis = FALSE, and S.NotHidden(Q;NotHid), which checks if an arbitrary point Q in space is hidden by S in which case NotHid = FALSE. The method S.NotHidden is very useful in the simultaneous representation of more surfaces than one.
A point P of a given surface S in a class S of surfaces is visible, that is
Check = TRUE
if and only if
Vis = TRUE in S.Visibility(P;Vis)
and
Not.Hid = TRUE in S^{*}.NotHidden(P;NotHid)
for all S^{*} Î S\{S}
Let S be a surface with parametric representation
x(u^{i}) = (x^{1}(u^{1},u^{2}),x^{2}(u^{1},u^{2}),x^{3}(u^{1},u^{2})) ((u^{1},u^{2}) Î D) |
where D Ì R^{2} is a domain, P Î S be a point with position vector OP and C be the centre of projection. Then Vis = FALSE if and only if
x(u^{i}) = OP + t PC for some (u^{1},u^{2}) Î D and t > 0.
Figure 4. The natural value for Vis
Example 2. The visibility of surfaces of revolution
The visibility problem has been solved for explicit, ruled, potential, tubular and general screw surfaces, for exponential cones and surfaces of revolution.