`
daojin
  • 浏览: 690083 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

看图说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。然后求得所求的点。

 

 

  • 大小: 1.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics