Example #1
0
        /// <summary>
        /// 获取最新速度数据并发送
        /// </summary>
        private void OnUpdateGestureResultTime(object sender, System.Timers.ElapsedEventArgs e)
        {
            EulerAngle upperOffset = EulerAngleOffset(_latestUpperArmAngleSpeed);
            EulerAngle foreOffset  = EulerAngleOffset(_latestForeArmAngleSpeed);

            GestureUpdated?.Invoke(upperOffset, foreOffset);
        }
Example #2
0
        /// <summary>
        /// 根据速度计算角度偏移量
        /// </summary>
        /// <param name="speed">传感器速度监测值</param>
        /// <returns></returns>
        public EulerAngle EulerAngleOffset(EulerAngleSpeed speed)
        {
            EulerAngle angle = new EulerAngle();

            if (IsMove(speed))
            {
                angle.Pitch = speed.PitchSpeed * _speedK;
                angle.Yaw   = speed.YawSpeed * _speedK;
                angle.Roll  = speed.RollSpeed * _speedK;
            }
            return(angle);
        }
Example #3
0
 /// <summary>
 /// 叠加两个欧拉角
 /// </summary>
 /// <param name="angle1"></param>
 /// <param name="angle2"></param>
 /// <returns></returns>
 public EulerAngle AddOffset(EulerAngle angle1, EulerAngle angle2)
 {
     return(new EulerAngle {
         Pitch = angle1.Pitch + angle2.Pitch, Yaw = angle1.Yaw + angle2.Yaw, Roll = angle1.Roll + angle2.Roll
     });
 }