Part I 空气曲棍球 Chapter5 (5.2 Working with a Virtual Coordinate Space)

2023-10-15 11:50

本文主要是介绍Part I 空气曲棍球 Chapter5 (5.2 Working with a Virtual Coordinate Space),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

5.2 虚拟坐标系(Working with a Virtual Coordinate Space)

    为了适配屏幕旋转的情况,我们需要调整之前使用的坐标空间,如何调整呢?那就是不能直接使用规范化设备坐标而是需要调整会使用虚拟坐标空间。为了使用OpenGL能够正确的进行渲染,我们需要找一种把虚拟坐标空间转换到规范化坐标空间的方法。而为了使用我们的球台桌面的竖屏与横屏情况下都得到正确的显示,这种转换还需要考虑屏幕方向。

    我们需要做的就是一个正侧投影,在正侧投影规则下,无论多远或者多近所有的东西看起来都是同样的大小。为了更好的理解下侧投影,假设我们有一个火车轨道,下图是从轨道下上方看轨道时的样子:


    这里还有一种特殊的投影方式叫做等轴测投影(isometric projection),它也是一种正侧投影,只不过有了一个偏移角度。这种类型的投影可以用来创建一个3D视角,就是在游戏中看到的城市模拟一样,如下图所示:


5.2.1 坐标空间转换(From Virtual Coordinates Back to Normalized Device Coordinates)

    当我们使用正侧投影把虚拟坐标空间转换到规范化设备坐标空间时,我们相当于在我们的世界中定义了一个3D空间,所有在所定义3D空间里面的内容都会得到显示,所有在3D空间外面的都被裁剪掉。在下面的图示中我们可以看到一个立方体中的简单场景:


    当我们使用正侧投影把这个立方体投射到屏幕的时候,就会得到下图所示场景:

    我们可以通过使用正侧投影改变立方体空间大小,然后就可以在屏幕上看到更多或者更少的内容,我们也可以改变这个立方体的形状使得在不现屏幕方向下都能得到正确的显示。
    在我们使用正侧投影之前,需要先来复习下一些线性代数基础知识(点击进入下一章)。

 

这篇关于Part I 空气曲棍球 Chapter5 (5.2 Working with a Virtual Coordinate Space)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/217523

相关文章

VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”问题

《VMWare报错“指定的文件不是虚拟磁盘“或“Thefilespecifiedisnotavirtualdisk”问题》文章描述了如何修复VMware虚拟机中出现的“指定的文件不是虚拟... 目录VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virt

Level3 — PART 3 — 自然语言处理与文本分析

目录 自然语言处理概要 分词与词性标注 N-Gram 分词 分词及词性标注的难点 法则式分词法 全切分 FMM和BMM Bi-direction MM 优缺点 统计式分词法 N-Gram概率模型 HMM概率模型 词性标注(Part-of-Speech Tagging) HMM 文本挖掘概要 信息检索(Information Retrieval) 全文扫描 关键词

MySQL record 02 part

查看已建数据库的基本信息: show CREATE DATABASE mydb; 注意,是DATABASE 不是 DATABASEs, 命令成功执行后,回显的信息有: CREATE DATABASE mydb /*!40100 DEFAULT CHARACTER SET utf8mb3 / /!80016 DEFAULT ENCRYPTION=‘N’ / CREATE DATABASE myd

空气能热泵热水器

空气能热泵热水器压缩机把低温低压气态冷媒转换成高压高温气态,压缩机压缩功能转化的热量为q1,高温高压的气态冷媒与水进行热交换,高压的冷媒在常温下被冷却、冷凝为液态。这过程中,冷媒放出热量用来加热水,使水升温变成热水。水吸收的热为q3,高压液态冷媒通过膨胀阀减压,压力下降,回到比外界低的温度,具有吸热蒸发的能力。低温低压的液态冷媒经过蒸发器(空气热交换器)吸收空气中的热量自身蒸发,由液态变为气态,冷

Eclipse或MyEclipse中Java Working Set管理项目

随着学习JAVA的时间的越来越久,项目也越来越多,Eclipse或MyEclipse界面中显示一堆! 每次工作使用到的项目肯定不会太多...... 每次从这么大数量的工程当中找到自己要使用的, 必须大规模的滚动滚动条...... 图片一   Project Explorer中:    图片二:Package Explorer中: 这样就好找很多了,分类放!

Vue3图片上传报错:Required part ‘file‘ is not present.

错误 "Required part 'file' is not present" 通常表明服务器期望在接收到的 multipart/form-data 请求中找到一个名为 file 的部分(即文件字段),但实际上没有找到。这可能是因为以下几个原因: 请求体构建不正确:在发送请求时,可能没有正确地将文件添加到 FormData 对象中,或者使用了错误的字段名。 前端代码错误:在前端代码中,可能

除猫毛应该用哪款宠物空气净化器?希喂、安德迈哪款更值得推荐

自从我的朋友也养了猫之后,我和她能讨论的话题就更多了,每天都在分享自家的猫咪今天干了什么可爱的事,一起探讨应该怎么让猫咪胖起来,每天撸都撸不够,好想时时刻刻和猫咪待在一起。 但她说到,本来这种生活挺好的,但是自从养了猫之后,家里的各个角落都开始有猫咪的毛发,每天都得清理,而且还有这个排便时的臭味,家里简直就是无法忍受,导致现在家里的氛围就更差了,她婆婆每天都在担心养了猫之后对家里人造成健

C++入门(part 2)

前言 在前文我们讲解了C++的诞生与历史,顺便讲解一些C++的小语法,本文会继续讲解C++的基础语法知识。 1. 缺省参数 1.1缺省参数的概念 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参则采⽤该形参的缺省值,否则使用指定的实参。(有些地⽅把缺省参数也叫默认参数) 1.2 缺省参数的分类 缺省参数分为全缺省和半缺省参数,全缺省就是全部形参给

为什么From/To space的大小几乎变成 0 了呢?

文章来源 https://hllvm-group.iteye.com/group/topic/39440 一、问题描述 Attaching to process ID 26424, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.231-b11usi

MySQL record 01 part

更改密码: alter user 'root'@'localhost' identified with mysql_native_password by ‘123456’; 注意: 在命令行方式下,每条MySQL的命令都是以分号结尾的,如果不加分号,MySQL会继续等待用户输入命令,直到MySQL看到分号,才会去执行分号前的所有用户输入的语句。包括密码在内,用户名、主机名,都需要使用引