Beispiel #1
0
        private Point_Obj process_float_data(float[] input_array, Subj_Data S)
        {
            float frame_num = input_array[0];
            float success_flag = input_array[1];

            if (success_flag == 1.0)
            {
                Console.WriteLine("{0}: Gaze Pt Package", Convert.ToInt32(frame_num));

                Point_Obj left_eye = new Point_Obj(input_array[2], input_array[3], input_array[4]);
                Point_Obj right_eye = new Point_Obj(input_array[5], input_array[6], input_array[7]);

                float alpha = input_array[8] * 180;
                float beta = input_array[9] * 180;
                float gamma = input_array[10] * 180;
                int ID = S.get_ID();

                Gaze_Comp G = new Gaze_Comp();
                Point_Obj p = G.get_gaze_pt(right_eye, left_eye, alpha, beta, gamma);
                Console.WriteLine("{0} - GAZE POINT (X, Y): ({1}, {2})", ID, p.get_x(), p.get_y());
                Point_Obj disp_pt = new Point_Obj(-p.get_x(), p.get_y() + S.get_MONITOR_DIM_Y() / 2);
                plot_gaze_point(disp_pt, S);
                Console.WriteLine("{0} - TRANSF GAZE POINT (X, Y): ({1}, {2})", ID, disp_pt.get_x(), disp_pt.get_y());

                return p;
            }
            else if(success_flag == 2.0)
            {
                float age = input_array[2];
                float gender = input_array[3];

                Console.WriteLine("{0}: Age/Gender Package", Convert.ToInt32(frame_num));
                S.set_age(Convert.ToDouble(age));

                if (gender >= 0.5)
                {
                    // Male
                    S.set_gender('M');
                }
                else
                {
                    // Female
                    S.set_gender('F');
                }

                disp_age(S);
                disp_gender(S);

                if (S.get_pt_list().Count != 0)
                {
                    return S.get_pt_list().Last().gaze_pt;
                }
                else
                {
                    return new Point_Obj(0.0F, -S.get_MONITOR_DIM_Y()/2);
                }
            }
            else
            {
                Console.WriteLine("{0}: Tracking Failure", Convert.ToInt32(frame_num));
                //Point_Obj Gaze_Pt = new Point_Obj(Single.PositiveInfinity, Single.PositiveInfinity);
                Point_Obj disp_pt_f = new Point_Obj(-1000F, -1000F);
                plot_gaze_point(disp_pt_f, S);
                //disp_pt_f.set_coord(Single.PositiveInfinity, Single.PositiveInfinity, 0);
                return disp_pt_f;
            }
        }