---
tags:
    - "Rotation"
---

# Angle

[Math](../index.md) / [Geometry](index.md) / **Angle** Quaternion

<div class="grid cards" markdown>

* :green_circle: Can Read

* :red_circle: Cannot Write

</div>

## Description

Returns the positive angle between two Quaternion rotations

## Code

```cs
using System;
using UnityEngine;
using VisualScript.Icons;

namespace VisualScript.Runtime
{
    [Get]
    
    [Title("Angle")]
    [Category("Math/Geometry/Angle", "Quaternion")]
    
    [Description("Returns the positive angle between two Quaternion rotations")]
    [Image(typeof(IconAngleAcute), ColorTheme.Type.Yellow)]
    
    [Keywords("Rotation")]
    
    [Serializable]
    public class TypeNumberMathQuaternionAngle : TypeNumber
    {
        [SerializeField] private GetQuaternion m_Rotation1 = new GetQuaternion();
        [SerializeField] private GetQuaternion m_Rotation2 = new GetQuaternion();

        public override double GetPreview(GameObject source) =>
            Quaternion.Angle(
                this.m_Rotation1.GetPreview(source),
                this.m_Rotation2.GetPreview(source)
            );

        public override double Get(Args args)
        {
            return Quaternion.Angle(
                this.m_Rotation1.Get(args),
                this.m_Rotation2.Get(args)
            );
        }

        public override string ToString()
        {
            return $"Angle ({this.m_Rotation1}, {this.m_Rotation2})";
        }
        
        protected override SubscriptionMode Subscription => SubscriptionMode.OnChange;
    }
}
```

