Reading a conventional protractor to any decent accuracy always tries my patience. So, I built a sine bar protractor. As can be seen, in addition to the measuring arms, it has two rolls, similar to those on a sine bar.
An offset half-lap hinge allows both arms to close flat against each other.
In use the device is set (or read) with calipers reading the separation between the two rolls.
The mathematics for converting between angle and caliper reading are a bit complicated, so I wrote a program to do the dirty work. It's available in the PROTRAC.ZIP archive on my page.