Vector math problem

I have a collection of coordinates in XY plane and I want to dynamicly project it on plane defined by normal.
For example:

  1. normal (0, 1, 0) - coordinates should be located in XZ plane
  2. normal (0, 0, 1) - coordinates should be located in XY plane (as default)

Original code:
https://pastebin.com/UnH6MJhP

In this case I am creating 2d grid
But same projection calculations should be applied to cirlucar points defined by center and radius (like here Unity - Scripting API: Handles.DrawSolidDisc)

Screens:

What I have missed?

GetPosition assembles the 9 points in the xy plane (without accounting for the desired plane normal) and then you are projecting them into the XZ plane, which is probably exactly what you have in the result (the 3 vertical points project down and overlap)

I tried with and it works

Vector3 xy = GetPosition(x, y);
Vector3 pos = Quaternion.FromToRotation(Vector3.forward, m_Normal) * xy;

But it would be great to find out other ways to solve same problem