• 图形学思考


     

    from:版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者允许不得转载。

    什么是透视图投射矩阵perspective projective matrix?

    空间物体的坐标乘以投射矩阵,那么就可以把空间的物体投射到屏幕上。

    大体是这样的矩阵:

    这里探讨一个问题:为什么乘以这个矩阵就可以把空间物体投射到屏幕上了呢?

    看看下面的图:

    其中的Projection Window就是我们的屏幕位置。

    我们需要把所有两条斜边和Near Plane 和Far Plane之中的所有物体影像投影到Projection Window中显示出来。

    如下图:

    就是要把y投影到Projection Window成为y`

    这个时候要计算y`的位置。如果是三维空间,那么原y的坐标点是(x,y,z),那么在平面上的点的坐标就为(x`,y`,d)

    为什么最后是d。因为Projection Window平面的方程就是z = d,这个平面上的所有点的z轴都为d。

    这样需要使用稍微复杂一点的数学知识计算,就会得到从坐标点(x,y,z)到(x`,y`,d)的计算公式,然后这个公式使用矩阵的形式表示出来,就得到了这里所要说的perspective projective matrix.(这里省去其中的数学知识讨论)。

    最后就利用这一个矩阵就会神奇地把空间坐标投影到屏幕上了。

    对应的directx代码:

    [cpp] view plain copy
     
    1. XMMATRIX P = XMMatrixPerspectiveFovLH(0.25f*XM_PI,AspectRatio(), 10.0f, 100.0f);  

    掌握了这个知识点,就不会觉得这个函数是那么神秘的了,自己也能写出来。


    当然恶补一下其中的数学知识,并加以练习应该理解会更加深。

    毕竟这些数学的知识加上三维空间的东西,我觉得就构成了计算机学科中最难理解的方向(之一?)了。

  • 相关阅读:
    gThumb 3.1.2 发布,支持 WebP 图像
    航空例行天气预报解析 metaf2xml
    Baruwa 1.1.2 发布,邮件监控系统
    Bisect 1.3 发布,Caml 代码覆盖测试
    MoonScript 0.2.2 发布,基于 Lua 的脚本语言
    Varnish 入门
    快速增量备份程序 DeltaCopy
    恢复模糊的图像 SmartDeblur
    Cairo 1.12.8 发布,向量图形会图库
    iText 5.3.4 发布,Java 的 PDF 开发包
  • 原文地址:https://www.cnblogs.com/decode1234/p/7738813.html
Copyright © 2020-2023  润新知