Analysis of Non-Circular Gears and Cam-Follower Systems as Function Generators