D3D中如何创建左手坐标系的观察矩阵

近来研究sandy,把学习心得写下:

eye:相机所在的位置

at:相机到目标的向量

up:向上的方向向量,书中介绍时为[0,1,0],而很多地方用[0,-1,0]

观察坐标系的z轴为:zaxis = normal(at - eye)

观察坐标系的x轴为:xaxis = normal(cross(up,zaxis))

观察坐标系的z轴为:yaxis = cross(zaxis,xaxis)

其中:normal为使单位向量化,cross为求两向量的法向量(单位向量)

dot为:轴 * eye.x + 轴 * eye.y + 轴 * eye.z

创建的矩阵为

-----------------------------------------------------------------------------------------------------

xaxis.x                     yaxis.x                    zaxis.x                   0

xaxis.y                     yaxis.y                    zaxis.y                   0

xaxis.z                     yaxis.z                    zaxis.z                   0

-dot(xaxis,eye)       -dot(yaxis,eye)     -dot( zaxis,eye)     1

---------------------------------------------------------------------------------------------------

而在实际应用中变为,如下

-----------------------------------------------------------------------------

xaxis.x    xaxis.y    xaxis.z     -dot(xaxis,eye)

yaxis.x    yaxis.y    yaxis.z     -dot(yaxis,eye)

zaxis.x    zaxis.y    zaxis.z     -dot(zaxis,eye)

0             0              0               1

-----------------------------------------------------------------------------

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值