# Detect all "visible" points on a triangulated surface

I have a triangulated surface that I want to work with. In order to optimize certain quantities related to this surface I want to find all points which are accessible from a given direction. To be more precise, let's denote by $S_h$ the surface and by $B$ the body enclosed by $S_h$. Given a direction $\vec d \in \Bbb{R}^3$ I want to find all points $x \in S_h$ such that the semi-line starting at $x$ going in the direction of $\vec d$ does not intersect $S_h$ a second time. An analogue way of saying this is given a direction $\vec d$ I want to find all the points which can be "seen" looking at $S_h$ from that direction.

I have the feeling that this could be something which is known in the field of computational geometry, but maybe I don't know the right terminology in order to find relevant references.

Is there an algorithm which is not too costly to implement in order to find all "visible points" from a certain direction? Do you know references dealing with efficient algorithmical implementation?

• Every computer graphics program has to solve this sort of problem. Have you looked at computer graphics or CGI books? Specifically, I believe that that's what the Z-Buffer is used for. Mar 11 '18 at 1:48
• It's called "backface culling" or "occlusion culling". A simple alternative could be to "iterate" through all vertices or triangles and verify that the angle between the surface normal and the view direction is less than 90 degrees. Mar 14 '18 at 10:10
• @André: Thank you for mentioning the terminology. The version with the angle between the normal and the view direction only works for convex shapes. You can imagine that if a hole is present, looking only at normals may say that some regions are visible, while they are not... Mar 14 '18 at 10:11