Unity3d 游戏数学基础 未完结

4x4齐次坐标 (摘自《3D数学基础:图形与游戏开发》)

为了理解标准3D坐标是怎样扩展到4D坐标的,让我们先看一下2D中的齐次坐标,它的形式为(x, y, w)。想象在3D中w=1处的标准2D平面,实际的2D点(x,y)用齐次坐标表示为(x,y,1),对于那些不在w=1平面上的点,则次它们投影到w=1平面上。所以齐次坐标(x,y,w)映射的实际2D点为(x/w, y/w)。
因此,给定一个2D点(x,y),齐次空间中有无数多个点与之对应。所有点的形式都为(kx, ky, k), k != 0。这些点构成一条穿过齐次原点的直线。
当w=0除,除法未定义。因此不存在实际的2D点。然而,可以将2D齐次点(x,y,0)解释为“位于无穷远的点”,它描述了一个方向而不是一个位置。
4D坐标的基本思想相同。实际的3D点能被认为是在4D中w=1“平面”上。4D点形式为(x,y,z,w),将4D点投影到这个“平面”上得到相应的实际3D点(x/w, y/w, z/w)。w=0时,4D点表示“无限远点“,它描述了一个方向而不是一个位置。

叉乘运算

Result = a x b = |a| * |b| sin0
左手坐标系,将拇指朝向a的方向,食指指向b的方向,则中指指向为方向为叉乘结果的方向
右手坐标系,当右手的四指从a以不超过180度的转角转向b时,竖起的大拇指指向是c的方向。

矩阵

平移矩阵
T(p) = | 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| px py pz 1 |

旋旋矩阵

绽放矩阵
S(p) = | px 0 0 0 |
| 0 py 0 0 |
| 0 0 pz 0 |
| 0 0 0 1 |

四元数
包含一个标量分量和一个三维向量分量,四元数Q可以记作:
Q = [w, (x,y,z)]
在3D数学中使用单位四元数来表示旋转,对于三维空间中旋转抽为n,旋转角度为a的旋转,如果用四元数表示,四个分量分别为:
w = cos( a/2 )
x = sin( a/2 ) cos (bx)
y = sin( a/2 ) cos (by)
z = sin( a/2 ) cos (bz);
其中cos(bx)、cos (by) 、cos (bz)分别为旋转轴的x,y,z分量

-欧拉角矩阵四元数
旋转一个位置点不支持支持不支持
增量旋转不支持支持,速度慢支持,速度快
平滑插值支持基本不支持支持
内存占用3个数值16个数值4个数值
表达是否唯一无数种组合唯一互为负的两种表示
可能会遇到的问题万向锁矩阵蠕变误差累积导致非法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值