目前我有一个 2D Vector2 Direction
,如果我将其转换为,如果我没有错的话(Vector3)Direction
,它将是单独的方向向量旋转,对吧?V3.forward
我已经成功获得了所有 3 个向量,绿色是法线,红色是曲线的正切,蓝色只是副法线。我想要的是使 2D Vector2 Direction 沿蓝色旋转并从世界空间中的红色开始。
如果有人可以提供帮助,我想知道统一函数基本解决方案和额外的纯数学基本解决方案。
目前我有一个 2D Vector2 Direction
,如果我将其转换为,如果我没有错的话(Vector3)Direction
,它将是单独的方向向量旋转,对吧?V3.forward
我已经成功获得了所有 3 个向量,绿色是法线,红色是曲线的正切,蓝色只是副法线。我想要的是使 2D Vector2 Direction 沿蓝色旋转并从世界空间中的红色开始。
如果有人可以提供帮助,我想知道统一函数基本解决方案和额外的纯数学基本解决方案。
Unity 有很多解决方案可以解决您的问题。在数学上,其实可以概括为如何求从原始坐标系到旋转后的坐标系(红、绿、蓝)的旋转矩阵。该链接指向另一个 SO 问题,根据这是一个简单的矩阵运算:
所以据我了解,你得到的是
Vector2 direction
.现在您想将其转换为 a
Vector3
,但将其与由已知up
和right
向量组成的坐标系对齐。所以你要做的基本上就是获取
right
向量并围绕向量旋转forward
给定的角度。所以我首先要得到那个角度
然后获取我们想要旋转的前向轴
计算要应用的旋转
最后将该旋转应用于现有
right
向量