/// <summary> /// 获取最新速度数据并发送 /// </summary> private void OnUpdateGestureResultTime(object sender, System.Timers.ElapsedEventArgs e) { EulerAngle upperOffset = EulerAngleOffset(_latestUpperArmAngleSpeed); EulerAngle foreOffset = EulerAngleOffset(_latestForeArmAngleSpeed); GestureUpdated?.Invoke(upperOffset, foreOffset); }
/// <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); }
/// <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 }); }