Exemplo n.º 1
0
        void SetFirstPose()
        {
            bodyParts[( int )BodyPartsName.ArmR].angle.X = -100 + 200 * ( float )randGen.NextDouble();
            bodyParts[( int )BodyPartsName.ArmR].angle.Y = -100 + 200 * ( float )randGen.NextDouble();
            bodyParts[( int )BodyPartsName.ArmR].angle.Z = -100 + 200 * ( float )randGen.NextDouble();

            bodyParts[( int )BodyPartsName.UpperArmR].angle.X = -100 + 200 * ( float )randGen.NextDouble();
            bodyParts[( int )BodyPartsName.UpperArmR].angle.Y = -100 + 200 * ( float )randGen.NextDouble();
            bodyParts[( int )BodyPartsName.UpperArmR].angle.Z = -100 + 200 * ( float )randGen.NextDouble();

            //bodyParts[ ( int )BodyPartsName.Trunk ].angle.X = -40 + 80 * ( float )randGen.NextDouble();
            //bodyParts[ ( int )BodyPartsName.Trunk ].angle.Y = -40 + 80 * ( float )randGen.NextDouble();
            //bodyParts[ ( int )BodyPartsName.Trunk ].angle.Z = -40 + 80 * ( float )randGen.NextDouble();

            drawList = new List <BodyParts>();
            //drawList.Add( bodyParts[ ( int )BodyPartsName.Trunk ] );
            drawList.Add(bodyParts[( int )BodyPartsName.UpperArmR]);
            drawList.Add(bodyParts[( int )BodyPartsName.ArmR]);

            for (int i = 0; i < 32; ++i)
            {
                PSOManager.SetBodyPartsToParticle(drawList.ToArray(), i);
            }

            //初期姿勢を記憶
            for (int i = 0; i < PSOManager.particles[0].degreeCount; ++i)
            {
                poseLog.Write(PSOManager.particles[0].degrees[i] + ",");
            }

            testEnv.RememberPose(PSOManager.particles[0].degrees);

            poseLog.Write("0\n");

            MakeNoise();
            PSOManager.SetCurrentDegreesToLocalBest();

            for (int i = 0; i < 32; ++i)
            {
                PSOManager.SetDegreesToPrevFrame(drawList.ToArray(), i);
            }
        }