Merge pull request #68161 from Chaosus/dotnet_quaternion_constructor

Add missed Quaternion constructor to C#
This commit is contained in:
Rémi Verschelde 2022-11-02 14:18:19 +01:00
commit 34c66fac0a
No known key found for this signature in database
GPG Key ID: C3336907360768E1
1 changed files with 24 additions and 0 deletions

View File

@ -572,6 +572,30 @@ namespace Godot
}
}
public Quaternion(Vector3 arcFrom, Vector3 arcTo)
{
Vector3 c = arcFrom.Cross(arcTo);
real_t d = arcFrom.Dot(arcTo);
if (d < -1.0f + Mathf.Epsilon)
{
x = 0f;
y = 1f;
z = 0f;
w = 0f;
}
else
{
real_t s = Mathf.Sqrt((1.0f + d) * 2.0f);
real_t rs = 1.0f / s;
x = c.x * rs;
y = c.y * rs;
z = c.z * rs;
w = s * 0.5f;
}
}
/// <summary>
/// Composes these two quaternions by multiplying them together.
/// This has the effect of rotating the second quaternion