Universal Joint, version 1.0, 2026-06-30
Rolf Puetter

A universal joint consists of an input axle transmitting rotary motion to an output axle. 
The two axles are inclined to each other. Each of the axes ends in a hinge. The hinges are 
oriented at 90 degrees to each other and connected by a cross shaft (in the picture, 
it consists of the red and blue lines. It carries an additional normal vector with a green dot at its
end to demonstrate its tumbling in space).
The output rotational velocity is not equal to the input velocity if the inclination angle 
gamma is ≠ 0.
The input axle has a handle, the output axle a color wheel to show the rotation more clearly.

Let alpha be the input angle and beta the output angle.
The relation between alpha and beta is then

beta = arctan(tan(alpha)/cos(gamma))

Differentiation yields a formula for the angular velocities omega1 and omega2 (after some
calculation):

omega2 = omega1 * (cos(gamma)/(1-sin²(gamma)*cos²(alpha))

From this formula you see that the rotational velocity is not transmitted uniformly.

Controls:

left and right arrow key: 	turn the whole picture about the z-axis
arrow up and down:		turn around the y-axis
[(] and [)]:			turn around the x-axis
[p]:				increase gamma by 20 degrees
[m]:				decrease gamma by 20 degrees
[*]:				dilate picture by factor 1.25
[/]:				shrink pictur by factor 0.8
[+]:				zoom in
[-]:				zoom out
[l]:				turn input axle by 20 degrees
[r]:				turn input axle by -20 degrees
[.]:				start/stop continuous rotation
[,]:				reverse orientation of rotation 