A common eyelid rigging technique is to create a curve, create a locator on the curve for each span of the eyelid, and then aim a joint from the center of the eye to that curve. This is essentially a spherical projection of the locators onto the curve. The issue with a spherical projection, is that a translation of the curve cv's in a single axis can correspond to a translation in all three axis of the joint.
This unwanted translation can mess up movement of the spans. If we were to skin this sphere the spans would not be moved straight up and down. but up and slightly in, which would mean the spans were no longer vertical or parallel.
So instead of using a spherical projection we want a planar projection of the points on the curve onto the surface of the sphere. We could do this with nurbs surfaces as I talk about here. But because we are projecting onto a sphere we can use a different, faster technique.
Here's is the node network laid out in case anyone would find that useful.
One thing I did not mention in the video was the ambiguity of the solution. If we take the formula for a sphere
and solve it
We end up with an ambiguous solution because for any given value of x and y there are two solutions for z (positive and negative). for eyelids this doesn't matter because you would never want to aim towards the back of the eye, but this technique can be applied to other rigs and you may need to solve that ambiguity issue.
The easiest solution would be to check the local Z coordinate of the point you are projecting, and if it is positive use the positive solution, and if it is negative use the negative solution. This can be done with a condition node.