how to rig this object (function compass)?
The trick is to use IK constraints mostly. Here's my setup:




Main is the root bone
pointer is a child of tip 1
big 1 is a child of pointer
big 2 is a child of big 1
small 1 is a child of big 1, not connected
small 2 is a child of small 1
small target is a child of big 2, not connected, no inherited rotation
tip 1 is a child of Main, not connected
tip 2 is a child of small 1 but doesn't inherit rotation
tip 3 is a child of Main


tip 2 might need a copy rotation constraint to tip 1 or tip 3 if you rotate the whole rig other than around Z.

Main is there to move everything. A handle of sorts for the whole compass.

pointer has a locked track constraint pointing to tip 3. Since the IKs are parented to it, they act in local space and won't flip even if the compass turns upside down using Main.


big 2 has an IK Constraint pointing to tip 3, chain length 2, it's the classic and simplest arm or leg rig.
small 2 has an IK Constraint to small target, chain length 2. Same thing, just upside down and parented to the big IK bones. 


Now the rig moves correctly whether you move tip 1 or tip 3.