Dot product is a cheap and useful function in many situations. It calculate the cosAngle to two unit vectors which is 1 when acute, 0 to -1 for obtuse angle. These are some applications which I found very useful.

**Gameplay
**Check if two unit are facing each other by dot product their forwardVec, for 3D you can optionally ignore the height component for the vectors.

For airplane game, prevent a plane from over pitching by checking the planeDir dot worldUpVec and worldDownVec.

Test if an unit has passed a waypoint, assuming the unit is moving forward. Do a distance check to ensure the unit is near the waypoint. do a dot product between the unit forward vector and the direction to the waypoint, if the angle is obtuse, mean the unit has pass the waypoint.

For terrain dot product normals of two face to find out the steepness of a slope.

**Graphics
**NdotL for lambert diffuse

NdotH for blinn specular

RdotV for phong specular

NdotV to detect edges of the model.