Evalutate Surface With Code's surface normal is not the "same" direction with Grasshopper's "Evalutate Surface" Component

Thank you very much for the detailed explanation! It’s very helpful.
It seems much better to use Brep as input instead of Surface in general, because Surface also doesn’t allow to get accurate edge curves as I asked in this post. Surface boundary lines c#