Esempio n. 1
0
        /// <summary>
        /// Задание 1
        /// </summary>
        private static void Task1()
        {
            CL.BeginApp("Считывать матрицу смежности из файла");

            string filename = @"..\..\..\TxtFiles\matrix.txt";

            int[,] matrix = ReadMatrix.Read(filename);

            CL.PrintArr(matrix);
            CL.ConsolePause();
            Menu();
        }
Esempio n. 2
0
        /// <summary>
        /// Задание 3
        /// </summary>
        private static void Task3()
        {
            CL.BeginApp("Функция обхода графа в ширину");

            string filename = @"..\..\..\TxtFiles\WorkMatrix.txt";

            int[,] matrix = ReadMatrix.Read(filename);
            CL.PrintArr(matrix);
            SearchGraph search = new SearchGraph();

            search.BFS(matrix);
            //SearchGraph.BFS(matrix);
            CL.ConsolePause();
            Menu();
        }
Esempio n. 3
0
    void Update()
    {
        float massS = 0, centerS = 0, massR = 0, centerR = 0;

        Debug.Log(speed_list[0].ComputeFunc(sp).ToString() + " " + ls_list[0].ComputeFunc(l_s).ToString() + " " + ms_list[0].ComputeFunc(middle_s).ToString() + " " + rs_list[0].ComputeFunc(r_s).ToString()
                  + '\n' + speed_list[1].ComputeFunc(sp).ToString() + " " + ls_list[1].ComputeFunc(l_s).ToString() + " " + ms_list[1].ComputeFunc(middle_s).ToString() + " " + rs_list[1].ComputeFunc(r_s).ToString()
                  + '\n' + speed_list[2].ComputeFunc(sp).ToString() + " " + ls_list[2].ComputeFunc(l_s).ToString() + " " + ms_list[2].ComputeFunc(middle_s).ToString() + " " + rs_list[2].ComputeFunc(r_s).ToString());

        for (int i = 0; i < 3; ++i)
        {
            for (int j = 0; j < 3; ++j)
            {
                for (int k = 0; k < 3; ++k)
                {
                    for (int l = 0; l < 3; ++l)
                    {
                        ReadMatrix rm  = GetComponent <ReadMatrix>();
                        int        rot = rm.rules[i][2 - j][2 - k][2 - l].Value;
                        int        a   = rm.rules[i][2 - j][2 - k][2 - l].Key;

                        List <float> li = new List <float>();
                        li.Add(speed_list[i].ComputeFunc(sp));
                        li.Add(ls_list[j].ComputeFunc(l_s));
                        li.Add(ms_list[k].ComputeFunc(middle_s));
                        li.Add(rs_list[l].ComputeFunc(r_s));
                        float min = Min(li);
                        if (min != 0)
                        {
                            //Debug.Log(i.ToString() + j.ToString() + k.ToString() + l.ToString());
                            //Debug.Log("Minimum" + min.ToString());
                            //Debug.Log(speed_list[i].ComputeFunc(sp).ToString() + " " + ls_list[j].ComputeFunc(l_s).ToString() + " " + ms_list[k].ComputeFunc(middle_s).ToString() + " " + rs_list[l].ComputeFunc(r_s).ToString());
                            //Debug.Log("Acceleration " + a.ToString() + " Rotation " + rot.ToString());
                            float mass_speed      = SpeedSquare(a, min);
                            float center_speed    = SpeedCenter(a, min);
                            float mass_rotation   = RotationSquare(rot, min);
                            float center_rotation = RotationCenter(rot, min);
                            //Debug.Log("Square" + mass_speed.ToString() + " Center" + center_speed.ToString());
                            //Debug.Log("Square" + mass_rotation.ToString() + " Center" + center_rotation.ToString());
                            if (massS == 0)
                            {
                                massS   = mass_speed;
                                centerS = center_speed;
                            }
                            else
                            {
                                if (centerS < center_speed)
                                {
                                    centerS += (center_speed - centerS) * (mass_speed / (mass_speed + massS));
                                }
                                else
                                {
                                    centerS -= (centerS - center_speed) * (mass_speed / (mass_speed + massS));
                                }
                                massS += mass_speed;
                            }
                            if (massR == 0)
                            {
                                massR   = mass_rotation;
                                centerR = center_rotation;
                            }
                            else
                            {
                                if (centerR < center_speed)
                                {
                                    centerR += (center_speed - centerR) * (mass_speed / (mass_speed + massR));
                                }
                                else
                                {
                                    centerR -= (centerR - center_speed) * (mass_speed / (mass_speed + massR));
                                }
                                massS += mass_speed;
                            }
                        }
                    }
                }
            }
        }

        //Debug.Log("ASFSGASFGSDFSADGASDGASDFASDFASDGSdgasdgasdfasdfasFasdfasdfasdgfsdfasdfasdfasdfasdfafsdfsdfsdfsdfs");
        sp += centerS;
        if (sp < 0.05f)
        {
            sp = 0.05f;
        }
        transform.position += Forward() * sp;
        Debug.Log("Speed = " + sp.ToString() + " Acceleration = " + centerS.ToString() + " Rotation = " + centerR.ToString());
        transform.Rotate(new Vector3(0, 0, -centerR));
    }