static void AngleAxisRaw(Vector3 origin, float angle, Vector3 axis, Quaternion startRotation, BaseVectorDirection builtinDirection, float halfAxisLenght, Vector3 direction, bool showVectorLabel = !default(bool))
        {
            Color temp = Gizmos.color;

            direction.Normalize();
            Gizmos.color = new Color32(162, 0, 255, 255);
            Gizmos.DrawRay(origin - axis.normalized * halfAxisLenght, axis.normalized * halfAxisLenght * 2);
            GizmosForVector.DrawVector(origin - axis.normalized * halfAxisLenght,
                                       axis.normalized, halfAxisLenght * 2, Gizmos.color);
            Quaternion endRotation = Quaternion.AngleAxis(angle, axis);

            endRotation = endRotation * startRotation;
            //	Slerp (origin, startRotation, endRotation, builtinDirection, halfAxisLenght, direction, showVectorLabel);
            InterpolateQuaternions(Quaternion.Slerp, origin, startRotation, endRotation, builtinDirection, halfAxisLenght, direction, showVectorLabel);
            Quaternion middle = Quaternion.Slerp(startRotation, endRotation, 0.5f);

//		DrawQuaternion (origin, middle, Color.yellow, 6, direction);////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            GizmosForVector.ShowLabel(origin + middle * direction * halfAxisLenght, //* startRotation
//				System.Math.Round (Quaternion.Angle (startRotation, endRotation), 0) + "\xB0", Color.magenta);
                                                                                    //	System.Math.Round ((startRotation * Quaternion.Inverse (endRotation)).SignedAngle ()) + "\xB0", Color.magenta);
                                      System.Math.Round((Quaternion.Inverse(endRotation) * startRotation).SignedAngle()) + "\xB0", Color.magenta);

            //System.Math.Round ((angle), 2) + "\xB0", Color.magenta);

            //first * Quaternion.Inverse (second)
            Gizmos.color = temp;
        }
 public static void Angle(Vector3 origin, Quaternion startRotation, Quaternion endRotation,
                          Vector3 customDirection, float lenght = lenght6, bool showVectorLabel = !default(bool))
 {
     //Slerp (origin, startRotation, endRotation, customDirection, lenght, showVectorLabel);
     InterpolateQuaternions(Quaternion.Slerp,
                            origin, startRotation, endRotation, customVectorDirection, lenght, customDirection, showVectorLabel);
     GizmosForVector.ShowLabel(origin, "angle: " + System.Math.Round(Quaternion.Angle(startRotation, endRotation), 0) + "\xB0", new Color32(127, 0, 255, 255));
 }
        public static void Angle(Vector3 origin, Quaternion startRotation, Quaternion endRotation,
                                 BaseVectorDirection builtinDirection = default(BaseVectorDirection), float lenght = lenght6, bool showVectorLabel = !default(bool))
        {
            Vector3 direction = ColorsAndDirections.GetBaseDirection(builtinDirection);

            InterpolateQuaternions(Quaternion.Slerp, origin, startRotation, endRotation, builtinDirection, lenght, direction, showVectorLabel);
            GizmosForVector.ShowLabel(origin, "angle: " + System.Math.Round(Quaternion.Angle(startRotation, endRotation), 0) + "\xB0", new Color32(127, 0, 255, 255));
        }
 public static void Dot(Vector3 origin, Quaternion a, Quaternion b, float lenght = 5, bool showVectorLabel = !default(bool))
 {
     Slerp(origin, a, b, (BaseVectorDirection)5, lenght, right, showVectorLabel);
     GizmosForVector.ShowLabel(origin, "dotProduct: " + System.Math.Round(Quaternion.Dot(a, b), 4), new Color32(0, 199, 29, 255));
 }