Exemplo n.º 1
0
        private void ComputeAngularAccelerations(TrajectoryKinematics kinematics, CalibrationHelper calibrationHelper)
        {
            if (kinematics.Length <= 4)
            {
                PadAngularAccelerations(kinematics);
                return;
            }

            for (int i = 2; i < kinematics.Length - 2; i++)
            {
                double d1  = GetDisplacementAngle(kinematics, i - 1, i - 2);
                double d2  = GetDisplacementAngle(kinematics, i, i - 1);
                double d3  = GetDisplacementAngle(kinematics, i + 1, i);
                double d4  = GetDisplacementAngle(kinematics, i + 2, i + 1);
                float  t02 = calibrationHelper.GetTime(2);
                float  t24 = calibrationHelper.GetTime(2);
                float  t13 = calibrationHelper.GetTime(2);

                float v1 = (float)((d1 + d2) / t02);
                float v2 = (float)((d3 + d4) / t24);
                float a  = (float)((v2 - v1) / t13);
                kinematics.AngularAcceleration[i] = calibrationHelper.ConvertAngularAcceleration(a);
            }

            PadAngularAccelerations(kinematics);
        }
Exemplo n.º 2
0
        private void ComputeAcceleration(TimeSeriesCollection tsc, CalibrationHelper calibrationHelper)
        {
            if (tsc.Length <= 2)
            {
                PadAccelerations(tsc);
                return;
            }

            for (int i = 1; i < tsc.Length - 1; i++)
            {
                float v1    = velocities[i - 1];
                float v2    = velocities[i + 1];
                float t     = calibrationHelper.GetTime(2);
                float alpha = (v2 - v1) / t;

                tsc[Kinematics.AngularAcceleration][i] = (double)calibrationHelper.ConvertAngularAcceleration(alpha);

                float at = radii[i] * alpha;
                tsc[Kinematics.TangentialAcceleration][i] = (double)calibrationHelper.ConvertAcceleration(at);

                float ac = radii[i] * velocities[i] * velocities[i];
                tsc[Kinematics.CentripetalAcceleration][i] = (double)calibrationHelper.ConvertAcceleration(ac);

                float a = (float)Math.Sqrt(at * at + ac * ac);
                tsc[Kinematics.ResultantLinearAcceleration][i] = (double)calibrationHelper.ConvertAcceleration(a);
            }

            PadAccelerations(tsc);
        }