I have three 3D vectors. Two of them define an (imaginary) plane (the green and red arrow in the picture). The third vector (the darker blue) can point anywhere it wants. All them have the same origin (lets say [0, 0, 0]) and the same length (say |1|).
How to get a vector that is the (shortest) projection of the dark blue one on that plane (in the image the lighter blue one) and should have the same length afterwards? It must also work when the dark blue vector stands perpendicular on the plane.