使用四元数围绕对象旋转
RotateAround an object with using Quaternion
我有一个很好的问题要问代码大师。想想你只有一个计算出的旋转值来旋转变换。但是你必须围绕它的子枢轴位置旋转。你是怎么解决这个问题的?
感谢您的宝贵时间:)
我写了代码。
这是解决方案。
为什么要重新发明轮子? ;)
Unity 有 Transform.RotateAround
and for the input you could simply use Quaternion.ToAngleAxis
比如
public static class TransformExtensions
{
public static void RotateAround(this Transform transform, Transform pivot, Quaternion rotation)
{
RotateAround (transform, pivot.transform.position, rotation);
}
public static void RotateAround(this Transform transform, Vector3 pivotPoint, Quaternion rotation)
{
rotation.ToAngleAxis(out var angle, out var axis);
transform.RotateAround(pivotPoint, axis, angle);
}
}
我有一个很好的问题要问代码大师。想想你只有一个计算出的旋转值来旋转变换。但是你必须围绕它的子枢轴位置旋转。你是怎么解决这个问题的?
感谢您的宝贵时间:)
我写了代码。 这是解决方案。
为什么要重新发明轮子? ;)
Unity 有 Transform.RotateAround
and for the input you could simply use Quaternion.ToAngleAxis
比如
public static class TransformExtensions
{
public static void RotateAround(this Transform transform, Transform pivot, Quaternion rotation)
{
RotateAround (transform, pivot.transform.position, rotation);
}
public static void RotateAround(this Transform transform, Vector3 pivotPoint, Quaternion rotation)
{
rotation.ToAngleAxis(out var angle, out var axis);
transform.RotateAround(pivotPoint, axis, angle);
}
}