Example #1
0
        public T Project(T v)
        {
            int dim = v.Dimension;

            v = VecX.Sub(v, m_origin);
            double[] nvArr = new double[dim];
            for (int i = 0; i < m_basis.Length; i++)
            {
                T      bv = m_basis[i];
                double d  = VecX.Dot(v, bv);
                for (int j = 0; j < dim; j++)
                {
                    nvArr[j] += d * bv[j];
                }
            }
            T nv = new T();

            for (int i = 0; i < dim; i++)
            {
                nv[i] = nvArr[i] + m_origin[i];
            }
            return(nv);
        }