Distance + motion direction sensing with the Arduino

I've tested various Ultrasonic sensors with the arduino, but these are only useful for testing distance. Does anyone know if there are off the shelf sensors that work with the arduino and are able to detect not just motion, but motion direction as well?

Out-of-doors, GPS works well to detection both motion and direction of movement, if the motion is faster than walking speed.

Indoors, you need to first define a coordinate system and the position within that system, in order to define motion and motion direction. Video cameras can be used in this way.