Use values receivers, not pointers

Most of these methods don't mutate the receiver.
Upgrade example to three-way orthographic projection
Display angles in degrees

They're stored internally as radians.
Add Segment.String()
Fix matrix rotation

The heading/pitch were mixed up before.
More realistic example