# Difference between revisions of "Silhouette Edges"

Silhouette Edges
Field: Geometry
Image Created By: Steve Cunningham

Silhouette Edges

placeholder

placeholder

# A More Mathematical Explanation

Note: understanding of this explanation requires: *Graphics

If you have a 3D object, either surface or solid, a silhouette edge is the collection of points where [...]

If you have a 3D object, either surface or solid, a silhouette edge is the collection of points where the surface normal is orthogonal to the view vector.

If the object is composed of facets, a silhouette edge is comprised of the common edges between a facet whose surface normal points toward the viewer and a facet whose surface normal points away from the viewer. This is then an algorithm for finding silhouette edges:

For every facet in the object
Compute the surface normal of the facet
If the surface normal points toward the viewer
For every edge of the facet
Identify the facet that shares this edge
Compute the surface normal for that facet
If this surface normal points away from the viewer
Add the edge to the collection of silhouette edges
endif
endfor
endif
endfor

Implementing this algorithm requires some vector arithmetic, as described in the pages on vectors and matrices. These include:

## Computing the surface normal of a facet

This is discussed in the page on surface normals, but it involves the cross product of two vectors. These vectors may be

(a) two adjacent edge vectors from a facet, or
(b) two tangent vectors at a point in the facet computed by partial

derivatives.
Cross products are order-sensitive, so you need to arrange these two vectors so that the angle between the first E1 and second E2 is positive in the usual sense, that is, that the second is counterclockwise from the first. Then the surface normal to the facet is the cross product $N = E1 \times E2$. This is shown in the figure below:

## Determining whether a surface facet normal points toward the viewer

Once you have the facet surface normal N, compute the view vector as the vector from the eyepoint to the point on the facet you used in computing the normal; this is the view vector V. For this question we are more interested in the vector from the facet to the eyepoint, but this is simply V’= –V. Then the surface normal points toward the eye if the angle between N and V’ is positive; this is true if the dot product N•V’ is positive, as shown in the figure below:

placeholder

placeholder

placeholder

references