IOS 透?视?投?影?矩?阵?推?导(转)

http://wenku.baidu.com/link?url=wDkyQR9fDI_tZas1BlMRUnNNoKwiQDygltm2wWxRr_sDwcDB51_QCDfR4Gb5wYrIUZ_tYxpjhZcquYeBgOC2Ce5tH-I6npzKEqtHZ9zFNt7

转载自:http://wenku.baidu.com/view/f478d71aa8114431b90dd870.html

这几个参量,也可以根据视野(

FOV

Field Of View

)参量来求得。下面是两

个平面的视野关系图:

其中,

两个

fov

分别是在

x-z

以及

y-z

平面上的视野。

如果只给了一个视野,

可以通过投影平面的宽高比计算出来:

用一个视野算出

w

或者

h

,然后用宽高比算出

h

或者

w

2

)一般情况的方程

这组方程比较繁琐,但更具一般性(和

OpenGL

一般矩阵的推导一致,这也是

D3DXMatrixPerspectiveOffCenterLH

D3DXMatrixPerspectiveOffCenterRH

个方法所使用的情况)。我们导出它:

我们继续反推出透视投影矩阵:

其中

最后那个矩阵就是

D3D

的一般透视投影矩阵。

好了,

目前为止,

我们已经导出了

D3D

的两个透视投影矩阵。

下面我把上一篇导

出的

OpenGL

的透视投影矩阵写出来,大家可以拿它和刚刚导出的

D3D

的一般性

透视投影矩阵做一个对比。

如果仔细观察,

可以发现二者在元素的布局上是一个转置的关系,

这个就是由它

们使用的左右手坐标系以及使用的行列矩阵的差异造成的。

而另外在一些元素的

细节上也存在着差异,

这是由于

D3D

CVV

z

范围不同造成的。

可见在原理相

同的情况下,

细微的环境差异可以造成非常大的变化,

而这就是透视投影矩阵存

在诸多不同版本的原因。一般情况的透视投影矩阵也可以使用视野方式来定义,

方法和特殊情况相同。

M3G

的透视投影矩阵

M3G

是对

OpenGL

进行的一个封装,

它的透视投影变换矩阵被放到了类

Camera

面。

因为它封装了

OpenGL

因此环境和

OpenGL

相同:

右手坐标系、

列向量乘法、

CVV

范围

[-1

1]

。它唯一和

OpenGL

有些差异的地方就在于它只使用投影平面

的中心和

x-y

平面的中心重合

(在

x

y

方向上都居中)

的情况

(就是我们上面

D3D

的第一种特殊情况)。我们用

OpenGL

透视投影矩阵最终版本来说明(再次

提醒,如果读者对此感到迷惑,请参考第一篇文章):

上面是

OpenGL

透视投影矩阵的最终版本,也是一般性版本,我们要把它变成特

殊性,版本,非常简单,和上面

D3D

的特殊情况一样,我们从对

x

y

进行插值

的那一步来看:

D3D

的第一种情况一样,销掉两边的

1/2

,得到:

则我们反推出透视投影矩阵:

最右边那个矩阵就是

M3G

的透视投影矩阵。

仍然可以通过视野参数来设置透视投

影矩阵,这里请读者自行推导,方法与上面

D3D

的完全相同

IOS 透?视?投?影?矩?阵?推?导(转),布布扣,bubuko.com

时间: 2024-10-28 16:29:31

IOS 透?视?投?影?矩?阵?推?导(转)的相关文章

iOS开发三步搞定百度推送

iOS开发三步搞定百度推送 百度推送很简单,准备工作:在百度云推送平台注册应用,上传证书. 步骤一: 百度云推送平台 http://push.baidu.com/sdk/push_client_sdk_for_ios  在这里下载iOS端SDK包,如下图: 把SDK包里面的下图文件夹拖到你的工程中,如下图,第一步就这么简单. 步骤二: 在工程中AppDelegate.m中的- (BOOL)application:(UIApplication *)application didFinishLaun

iOS不使用第三方平台,发送推送消息

iOS不使用第三方平台,发送推送消息 先看看客户端: 需要关注两个点:一是代码部分的DeviceToken获取,且看代码 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //消息推送支持的类型 UIRemoteNotificationType types = (UIRemoteNotificationTypeBadge |U

IOS开发—IOS 8 中设置applicationIconBadgeNumber和消息推送

摘要 在IOS7中设置applicationIconBadgeNumber不会有什么问题,但是直接在IOS8中设置applicationIconBadgeNumber会报错 因为在IOS8中要想设置applicationIconBadgeNumber,需要用户的授权,在IOS8中,需要加上下面的代码: UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotifica

iOS技术点:判断用户是否开启推送开关/是否允许推送?

- (BOOL)isAllowedNotification { //iOS8 check if user allow notification if (IS_IOS_8) {// system is iOS8 UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSettings]; if (UIUserNotificationTypeNone != sett

iOS 疑难杂症(什么鬼系列)— — 收到推送显示后自动消失的问题

声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 问题 正在支持 Remote Notification ,服务端已经加好 content-available ,测试发现一个奇怪的问题 —— 确实不影响老版本,新版本收到推送后消息过会会自动消失.一开始以为是服务端的问题,以为少传了 badge 和 sound 参数导致了,用 NWPusher 本地测试了一下删掉也没问题,然后就继续检查

消隐算法二

摘 要 造 型 是 计 算 机 三 维 图 形 处 理 的 基 础, 而 消 隐 则 是 三 维 造 型 的 关 键. 本 文 剖 析 了 当 前 在CAD 三 维 图 形 处 理 中 最 主 要 的8 种 物 体 空 间 消 隐 算 法 和4 种 图 象 空 间 消 隐 算 法. ---- 关 键 词 造 型. 消 隐. 物 体 空 间 法. 图 象 空 间 法 ---- 分 类 号 ---- 造 型(modeling) 是 计 算 机 三 维 图 形 处 理 的 基 础, 而 消 除 隐 藏

iOS开发中的远程推送实现(最新,支持iOS9)

我的个人项目<丁丁印记>中加入了远程推送功能,按照操作说明去做还是比较容易实现的,但是学的不够不系统,因此这篇文章希望总结一下最新的iOS推送功能,因为iOS8之后的推送和致之前的版本是有所不同的,也希望想能帮助到需要的朋友.这篇文章将从零开始,向大家介绍远程推送功能的原理和使用. 什么是远程推送通知 顾名思义,就是从远程服务器推送给客户端的通知(需要联网)远程推送服务,又称为APNs(Apple Push Notification Services). 为什么程序中需要远程推送功能 1.传统

IOS推送功能push

笔记:ios推送功能 推送可实时提醒用户你想要让客户端用户知道的信息,那怕用户并没有开启这个应用.应用场景很广泛,如淘宝应用:在你使用淘宝客户端的时候,假如你拍的东西发货了,如果没有推送功能,你不会及时知道你拍下的东西已经发货.但使用了推送后,淘宝就会发送一条推送通知,告知使用客户端App的你,你拍下的东西已经发货.使用推送的场景很多,在用户的体验度上更人性. 苹果的推送机制(APNS)咯(ps:其实每一篇教程都有),先来看一张苹果官方对其推送做出解释的概要图. Provider是给你手机应用发

iOS 通知推送APNS

结合网上各个资料,再简单整理的一份. 一.APNS推送说明 1.你的IOS应用需要去注册APNS消息推送功能. 2.当苹果APNS推送服收到来自你应用的注册消息就会返回一串device token给你(很重要) 3.将应用收到的device Token传给你本地的Push服务器. 4.当你需要为应用推送消息的时候,你本地的推送服务器会将消息,以及Device Token打包发送到苹果的APNS服 5.APNS再将消息推送给目的iphone 二.推送的准备工作 推送准备的主要就是1.推送证书 2.