public static Bezier CreateBezierRegression(List <Vector2> points) { float[] X = points.Select(x => x.X).ToArray(); float[] Y = points.Select(x => x.Y).ToArray(); float[][] T = ComputeTMatrix(X, Y); float[] resultX = Matrix.Multiply(Matrix.Multiply(Matrix.Multiply(Matrix.Inverse(M_Matrix), Matrix.Inverse(Matrix.Multiply(Matrix.Transpose(T), T))), Matrix.Transpose(T)), X); float[] resultY = Matrix.Multiply(Matrix.Multiply(Matrix.Multiply(Matrix.Inverse(M_Matrix), Matrix.Inverse(Matrix.Multiply(Matrix.Transpose(T), T))), Matrix.Transpose(T)), Y); return(new Bezier() { P1 = new Vector2(resultX[0], resultY[0]), C1 = new Vector2(resultX[1], resultY[1]), C2 = new Vector2(resultX[2], resultY[2]), P2 = new Vector2(resultX[3], resultY[3]), }); }