Add missed Quaternion constructor to C#

This commit is contained in:
Yuri Rubinsky 2022-11-02 11:31:21 +03:00
parent 0a0e99cadc
commit 9487a6ea32
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