From 6b0e636abf92fa940211f14f4f2013524c5c023d Mon Sep 17 00:00:00 2001
From: Randy Mackay <rmackay9@yahoo.com>
Date: Sat, 22 Nov 2014 14:09:16 +0900
Subject: [PATCH] AP_Math: add yaw 293, pitch 68, roll 180 rotation

---
 libraries/AP_Math/rotations.h | 3 ++-
 libraries/AP_Math/vector3.cpp | 9 +++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/libraries/AP_Math/rotations.h b/libraries/AP_Math/rotations.h
index 152e8e68c..226b9d141 100644
--- a/libraries/AP_Math/rotations.h
+++ b/libraries/AP_Math/rotations.h
@@ -64,11 +64,12 @@ enum Rotation {
     ROTATION_ROLL_270_PITCH_270  = 35,
     ROTATION_ROLL_90_PITCH_180_YAW_90 = 36,
     ROTATION_ROLL_90_YAW_270     = 37,
+    ROTATION_YAW_293_PITCH_68_ROLL_180 = 38,
     ROTATION_MAX
 };
 /*
 Here are the same values in a form sutable for a @Values attribute in
 auto documentation:
 
-@Values: 0:None,1:Yaw45,2:Yaw90,3:Yaw135,4:Yaw180,5:Yaw225,6:Yaw270,7:Yaw315,8:Roll180,9:Roll180Yaw45,10:Roll180Yaw90,11:Roll180Yaw135,12:Pitch180,13:Roll180Yaw225,14:Roll180Yaw270,15:Roll180Yaw315,16:Roll90,17:Roll90Yaw45,18:Roll90Yaw90,19:Roll90Yaw135,20:Roll270,21:Roll270Yaw45,22:Roll270Yaw90,23:Roll270Yaw136,24:Pitch90,25:Pitch270,26:Pitch180Yaw90,27:Pitch180Yaw270,28:Roll90Pitch90,29:Roll180Pitch90,30:Roll270Pitch90,31:Roll90Pitch180,32:Roll270Pitch180,33:Roll90Pitch270,34:Roll180Pitch270,35:Roll270Pitch270,36:Roll90Pitch180Yaw90,37:Roll90Yaw270
+@Values: 0:None,1:Yaw45,2:Yaw90,3:Yaw135,4:Yaw180,5:Yaw225,6:Yaw270,7:Yaw315,8:Roll180,9:Roll180Yaw45,10:Roll180Yaw90,11:Roll180Yaw135,12:Pitch180,13:Roll180Yaw225,14:Roll180Yaw270,15:Roll180Yaw315,16:Roll90,17:Roll90Yaw45,18:Roll90Yaw90,19:Roll90Yaw135,20:Roll270,21:Roll270Yaw45,22:Roll270Yaw90,23:Roll270Yaw136,24:Pitch90,25:Pitch270,26:Pitch180Yaw90,27:Pitch180Yaw270,28:Roll90Pitch90,29:Roll180Pitch90,30:Roll270Pitch90,31:Roll90Pitch180,32:Roll270Pitch180,33:Roll90Pitch270,34:Roll180Pitch270,35:Roll270Pitch270,36:Roll90Pitch180Yaw90,37:Roll90Yaw270,38:Yaw293Pitch68Roll180
  */
diff --git a/libraries/AP_Math/vector3.cpp b/libraries/AP_Math/vector3.cpp
index b08a03dd3..28fe75798 100644
--- a/libraries/AP_Math/vector3.cpp
+++ b/libraries/AP_Math/vector3.cpp
@@ -221,6 +221,15 @@ void Vector3<T>::rotate(enum Rotation rotation)
         tmp = x; x = y; y = -tmp;
         return;
     }
+    case ROTATION_YAW_293_PITCH_68_ROLL_180: {
+        float tmp = x;
+        float tmpy = y;
+        float tmpz = z;
+        x = 0.1430389f * tmp -0.9184465f * tmpy -0.3687762f * tmpz;
+        y = -0.3321327f * tmp -0.3955452f * tmpy +0.8562895f * tmpz;
+        z = -0.9323238f * tmp -0.00000003f * tmpy -0.3616245f * tmpz;
+        return;
+    }
     }
 }
 
-- 
GitLab