3D变换中的四元数
来源:互联网 发布:数据上报系统 编辑:程序博客网 时间:2024/06/08 20:00
i*i = j*j = k*k= -1
i*j = k, j*i = -k
可以把quaternion看做一个标量和一个3D向量的组合。实部w表示标量,虚部表示向量标记为V,或三个单独的分量(x,y,z)。所以quaternion可以记为[ w,V]或[ w,(x,y,x)]。对quaternion最大的误解在于认为w表示旋转角度,V表示旋转轴。正确的理解应该是w与旋转角度有关,v与旋转轴有关。例如,要表示以向量N为轴,轴旋α度,相对的quaternion应该是:
q = [ cos(α/ 2) , sin(α/ 2) N]
=[ cos(α/ 2) , ( sina(α/ 2) Nx, sin(α/ 2)Ny, sin(α/ 2)Nz ) ]
为了计算方便,一般要求N为单位矢量。对quaternion来说使用四个值就能记录旋转,而不是Matrix所需的十六个值。为什么用quaternion来计算旋转很方便呢?先说过quaternion是一个复数,如果你还记得一点点复数的知识,那么应该知道复数乘法(叉乘)的几何意义实际上就是对复数进行旋转。对最简单的复数p= x + yi来说,和另一个复数q = ( conα,sinα)相乘,则表示把p沿逆时针方向旋转α:
p’ = pq
当然,x+yi的形式只能表示2D变换,对3D变换来说就需要使用 quaternion了,而且计算也要复杂一点。为了对3D空间中的一个点p(x,y,z)进行旋转,需要先把它转换为quaternion形式p = [0, ( x, y, z)],接下来前面讨论的内容,定义q = cos(α/ 2) , sin(α/ 2)N为旋转quaternion,这里N为单位矢量长度的旋转轴,α为旋转角度。那么旋转之后的点p’则为:
p’ = qpq-1
- 3D变换中的四元数
- 3D变换中的四元数
- 计算机3D图形学中的坐标系变换
- WPF 3D:使用变换中的TranslateTransform3D
- CSS3 中的 2D 变换
- 附录A 8. Direct3D中的3D坐标变换
- 3D图形学中的数学:法向量的变换
- 理解计算机3D图形学中的坐标系变换
- 理解计算机3D图形学中的坐标系变换
- 3D渲染管线中的变换矩阵及推导过程
- 理解计算机3D图形学中的坐标系变换
- 理解计算机3D图形学中的坐标系变换
- 理解计算机3D图形学中的坐标系变换
- 理解计算机3D图形学中的坐标系变换
- 理解计算机3D图形学中的坐标系变换
- 【菜鸟也能玩转OpenGL】3D技术中的相机变换
- 理解计算机3D图形学中的坐标系变换
- 使用GDI+模拟directx 3D渲染中的坐标变换
- 数据挖掘入门
- strstr的c语言实现
- 游戏编程看书
- Blackberry 10 特性与开发相关知识
- VS2010+Opencv-2.4.0的配置攻略
- 3D变换中的四元数
- OSD 在wince 小结
- pid match算法思想
- 如何减少电脑辐射的危害——电脑族必看!
- erlang之OTP中文文档
- 使用HttpURLConnection获取网页内容
- 基于guided image filtering的图像去雾 opencv实现
- c:import 标签详解
- ZedGraph做统计