看图说OpenGL之二之投影矩阵求法

在数学上来说,下面这个算法可以说是再精准不过,但是为何OpenGL的计算者并不采用呢。这是因为要进行裁剪,要进行归一化。注意到投影坐标xp(投影坐标)与xe(人眼),关于ze(人眼)是线性关系。就假设归一下系数为-ze.

 

1.透视投影矩阵实际上是把人眼坐标系,转换到裁剪坐标系。x, y将随着z的增大而增大。而透视除法操作得到的归一化坐标,将随着z的增大而减小。总的来说是随着z的增大而减小,随着x,y的增大而增大。

 

2.裁剪坐标系的值除以-ze(也就是裁剪坐标中的wc)就转换到了归一化坐标系。个人认为裁剪坐标系实际上还是一个透视视景体。在这个实景体中,带了个可以判断是否裁剪的w坐标。

 

1.网上有很多求投影矩阵的方法,大都粗略的很,没有一个系统的概念。也许用高中的三角形相似来求这个矩阵,仅仅拥有高中知识的人可以接受,但是,其理论基础很差:

 

 

OB/OD = BA/DC.由此推导出A的y坐标.A的X坐标的推导方法类似。这种方法比较原始。y‘ = y*near/z;

x' = x*near/z;

简单吧。但是为什么那个透视投影矩阵那么复杂呢:

 

 

 

 

 

 

2.

现在有一种需求,就是求任意一个点,沿着任意一个方向,到任意一个平面的投影!

这个是非常重要的需求。特别是再碰撞检测中。

 

用向量法和点积求交点。

 

所求的点=直线上得点+t*直线方向向量

(所求的点-平面已知点)点乘 (平面法线) = 0

求得t。然后求得所求的点。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值