Ejemplo n.º 1
0
    public Vector4 Displacement(Vector4[] c, Vector4 x)
    {
        // c=[p;q]; x=[0, x,y,z]
        // c:x -> (q*x - 2*p)*Inv(q);
        Vector4 p = c[0], q = c[1];
        Vector4 newPoint = H.Mult(H.Mult(p, x) + 1.0f * q, H.Invers(p));

        return(newPoint);
    }
Ejemplo n.º 2
0
    //!!!!!!!! MAKE IT flat -> from x2for to x1for and make it parallelible (is it possible?)
    // make sense first make as a JobFor, second - Execute() stuff because for is not an independent
    public List <Vector4> GenerateCurve()
    {
        // qt-pwf(t); pt-wf(t);
        // Visis C(t) bus Img(H)
        List <Vector4> curve = new List <Vector4>();
        Vector4        Ft, Wt;

        for (int t = 0; t < timeList.Count; t++)
        {
            Ft = new Vector4(0, 0, 0, 0);          // q(t)
            Wt = new Vector4(0, 0, 0, 0);          // p(t)

            List <float> fiList = getFiList(timeList[t]);

            for (int i = 0; i < TList.Count; i++)
            {
                //t yra rezoliucijos delta step
                if (points.Count == 5)
                {
                    Ft += H.Mult(points[i * 2], weights[i]) * fiList[i];
                }
                else
                {
                    Ft += H.Mult(points[i], weights[i]) * fiList[i];
                }
                Wt += weights[i] * fiList[i];
            }
            //print(Wt+" "+Ft);

            // Su sitais kazkaip veike:

            /*
             * if (true) {
             *      Vector4[] cDH_Mesh = {Ft, H.Invers(Wt)};
             *      Vector4[] cDH_Obj = {Wt,Ft};
             *      cDH_List_Mesh.Add(cDH_Mesh);
             *      cDH_List_Obj.Add(cDH_Obj);
             * }
             */
            Vector4[] cDH = { Wt, Ft };
            cDH_List.Add(cDH);

            //Vector4[] cDH = {Wt,Ft};
            curve.Add(H.Mult(Ft, H.Invers(Wt)));
            //curve.Add(Displacement(cDH, new Vector4(0,0,0,0)));
        }
        return(curve);
    }