Foundations of 3D Graphics Programming: Using JOGL and Java3D