unity3d - FromToRotation 背后的数学原理是什么?Unity3d
问题描述
我试图更好地理解四元数,但我不知道 FromToRotation 背后的数学是如何工作的。我尝试查找此内容,但找不到任何结果。
解决方案
您可能知道旋转可以用以下形式的四元数表示:
cos (phi / 2)
sin (phi / 2) * axis.x
sin (phi / 2) * axis.y
sin (phi / 2) * axis.z
axis
是旋转轴,phi
是旋转角度。这是定义四元数所需的两个度量。
有多个旋转将一个向量映射from
到另一个向量to
。最短的旋转是轴垂直于两个向量的旋转。因此,轴是:
axis = normalize(from x to)
x
表示叉积。
角度是两个向量之间的角度:
phi = acos(dot(from, to) / (norm(from) * norm(to))
norm
是向量范数或向量长度。
使用这些值,您可以计算四元数。
推荐阅读
- python - 在 Thread 中使用 asyncio 的问题
- css - 在具有不同列大小的引导程序中包装网格
- jenkins - 声明式管道 - 运行 shell 命令
- c++ - 二进制表达式的无效操作数('std::ostream'(又名'basic_ostream
') 和 'sound_ctl') - c# - Unity Coroutine Yield 似乎每次都关闭协程
- python - 使用矢量化在 nan 之后在 numpy 数组的行中获取第一个/第二个/第三个...值
- c++ - 给植物浇水(竞争性编程)
- java - 无法解析方法“createDirectStream”Java Spark Kafka
- php - 应用程序在网络服务器上完全失败,而在 localhost 上运行良好
- php - PHP Trait 函数与另一个 trait 函数冲突