Hello Herr May,
Thank you for reaching out to us. I am not quite sure why you think it should do that.
The angle between two vectors u and v is defined as:
theta(u, v) = arccosine(~u * ~v)
I.e., the arccosine of the dot product of the two normalized vectors. This is due to the so called circle functions, specifically this identity:
26ea0c5e-9de3-4885-bc15-34b4ee3342da-image.png
Under the hood, GetAngle does exactly what I declared above (just in a bit more efficient manner, as calculating the normalized vector is much more expensive than this little trick):
123bbf8a-568b-49a5-9ff3-2bac41f61339-image.png
As you can see, the correct solution to the arccosine of the dot product of the null vector with itself is 0.5 π, i.e., the value you got :
ebfd4607-e872-42ef-898c-d3a2de4d8dd8-image.png
You could now argue if that is a sensible result for a method that is called 'GetAngle' and if it should throw an error on getting an input vector or being called on a vector with the length zero. But you have also to keep in mind that the C++ backend is used by people who will know the identity pi_half = arccosine(~(0, 0, 0) * ~(0, 0, 0)) and might want to make use of it.
Cheers,
Ferdinand