Isosurface.QEF.Solve2 C# (CSharp) Method

Solve2() public method

public Solve2 ( float svd_tol, int sweeps, float pinv_tol ) : Vector2
svd_tol float
sweeps int
pinv_tol float
return Vector2
        public Vector2 Solve2(float svd_tol, int sweeps, float pinv_tol)
        {
            Vector2 x = new Vector2(mass_point.X, mass_point.Y) / (float)Intersections.Count;
            //return x;
            float error = GetDistanceSquared(x);

            if (Math.Abs(error) >= 0.0001f)
            {
                for (int i = 0; i < deltas.Length; i++)
                {
                    Vector2 new_point = new Vector2(x.X + deltas[i].X, x.Y + deltas[i].Y);
                    //new_point = Vector2.Clamp(new_point, Vector2.Zero, Vector2.One);
                    float e = GetDistanceSquared(new_point);
                    if (e <= error)
                    {
                        x = new_point;
                        if (Math.Abs(e) < 0.0001f)
                            break;
                        error = e;
                    }
                }
            }

            //if (x.X < 0 || x.Y < 0 || x.X >= 1 || x.Y >= 1)
            //	x = new Vector2(mass_point.X, mass_point.Y) / (float)Intersections.Count;
            return Vector2.Clamp(x, Vector2.Zero, Vector2.One);
        }