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代码:

  1. XMMATRIX P = XMMatrixPerspectiveFovLH(0.25f*XM_PI,AspectRatio(), 10.0f, 100.0f);

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

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

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

图形学思考 - 聊聊透视图投射矩阵perspective projective matrix的更多相关文章

  1. 程序员能力矩阵 Programmer Competency Matrix

    [译文]程序员能力矩阵 Programmer Competency Matrix [译文]程序员能力矩阵 Programmer Competency Matrix 注意:每个层次的知识都是渐增的,位于 ...

  2. [转]Numpy中矩阵对象(matrix)

    numpy模块中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算,以及基本的统计功能,转置,可逆性等等,包括对复数的处理,均在matrix对象中. class numpy.matr ...

  3. 拉普拉斯矩阵(Laplace Matrix)与瑞利熵(Rayleigh quotient)

    作者:桂. 时间:2017-04-13  07:43:03 链接:http://www.cnblogs.com/xingshansi/p/6702188.html 声明:欢迎被转载,不过记得注明出处哦 ...

  4. 学习的矩阵微积分The matrix calculus you need for deep learning

    学习的矩阵微积分The matrix calculus you need for deep learning https://explained.ai/matrix-calculus/index.ht ...

  5. [矩阵乘法] PKU3233 Matrix Power Series

    [ 矩 阵 乘 法 ] M a t r i x P o w e r S e r i e s [矩阵乘法]Matrix Power Series [矩阵乘法]MatrixPowerSeries Desc ...

  6. [译文]程序员能力矩阵 Programmer Competency Matrix

    注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识. 计算机科学 Computer Science   2n (Level 0) n2 (Level 1) n (Leve ...

  7. 希尔伯特矩阵(Hilbert matrix)

    例: [ 1 1/2 1/3  1/2 1/3 1/4  1/3 1/4 1/5 ]   矩阵的一种,其元素A(i,j)=1/(i+j-1),i,j分别为其行标和列标. 即: [1,1/2,1/3,- ...

  8. 反射矩阵(reflection matrix)推导

    设平面为(nx,ny,nz,d),则以此平面为镜面的列主序反射矩阵如下: 推导如下: 一,平面的表示: 如图所示,过点p,法向量为n的平面,可表示为: np+d=0 其中d为平面到原点的有向距离.如果 ...

  9. [Swift]LeetCode59. 螺旋矩阵 II | Spiral Matrix II

    Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral ord ...

随机推荐

  1. ios的xxxAppDelegate.h分析

    #import "BIDAppDelegate.h" #import "BIDViewController.h" @implementation BIDAppD ...

  2. input子系统分析之一:框架

    内核版本:3.9.5 输入设备总类繁杂,包括按键,键盘,触摸屏,鼠标,摇杆等等,它们本身都是字符设备,不过内核为了能将这些设备的共性抽象出来,简化驱动的开发,建立了一个Input子系统.Input子系 ...

  3. 微信公众号token 验证

    1. 首先给出测试项目的整体目录: 2. CoreServlet类: 当get请求的时候会执行get方法,post请求的时候会执行post方法,分别来处理不同的请求 package com.zjn.s ...

  4. ConditionalAttribute 类

    指示编译器应忽略方法调用或属性,除非已定义指定的条件编译符号. #define CONDITION1#define CONDITION2using System;using System.Diagno ...

  5. 二维码生成插件qrious及网站扫码登录的一些理解

    什么是二维码 ​ 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型. ...

  6. Codeforces 667C DP

    题意:给你一个字符串,这个字符串的构造方法如下:先选择一个长度大于4的前缀,然后每次向字符串尾部添加一个长度为2或者长度为3的后缀,不能添加连续的相同的后缀,问可能的后缀有哪些?并按字典序输出去. 思 ...

  7. shell判断文件类型和权限

    shell  判断文件类型. -d 文件 判断该文件是否存在,并且是否为目录(是目录为真) -e文件 判断该文件是否存在(存在为真) -f文件 判断该文件是否存在,并且是否为文件(是普通文件为真) - ...

  8. 返回JSON到前台的对象属性设置

    1.项目中使用JSON的第三方架包:jackson-annotations-2.8.0.jar 2.可以将对象的属性返回进行相应的处理 比如格式化时间.密码敏感等属性 如:User.java pack ...

  9. 心理学轨迹及AI基础理论读后感

    今天简单的看了下心理学轨迹及AI基础理论发现世界确实是那3%的人改变的,我等屁民还努力在红尘中争渡,下面简单记录下我刚看完的思路,算做个笔记给自己看.. 模型建立的最终结果可以解读所有的心理学现象,可 ...

  10. IIS7日志中时间与系统时间不一致的原因

    最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生的产并发访问日志,全部发生在凌晨至上班前. 本以为是系统时间设置错误,检查后一切正常.后查询资料,原来是这个原因: 日 ...