1.4.1、坐标系

图1-6展示的是OpenGL的坐标系。坐标系是用于帮助显示空间中的位置之间的关系的参考线的集合。图1-6中的每一个箭头叫做一个轴。 OpenGL ES总是开始于一个矩形的笛卡儿坐标系,这意味着任何两个轴之间的角度都是90度。空间中的每一个位置被称为一个顶点,每个顶点通过其在X、Y、Z轴上的位置被定义。

图 1-6

图1-7显示了相对于坐标轴的在{1.5, 3.0, 0.0} 位置的顶点。这个顶点是通过X轴1.5的位置,Y轴3.0的位置,Z轴0的位置来定义的。图1-7中的虚线显示了顶点是怎么与坐标轴对齐的。

沿着每个轴的位置被称为坐标,确定一个用于3D图形的顶点需要3个坐标。图1-8展示了更多的顶点以及它们在OpenGL坐标系中的相对位置。虚线显示了顶点是 怎么与坐标轴对齐的。

图 1-7
图 1-8

OpenGL ES坐标是以浮点数来存储的。现代GPU对浮点运算做了专门的优化,即使是使用其他数据类型的顶点也会被转换成浮点值。

使用和理解坐标系的关键点之一是记住它仅仅是-一个假想的数学工具。第5章会介绍修改坐标系后的巨大影响。从纯数学意义上讲,可以有很多种非笛卡儿坐标系。例如,极坐标系是通过假想的落在一个使用两个角和一个半径的球的表面上的点来确定3D空间中的位置的。现在不用担心非笛卡儿坐标系的数学运算。硬件中的嵌人式GPU对于大部分非笛卡儿坐标系都是不支持的,并且本书中没有例子会使用非笛卡儿坐标 系。如果你需要在工程中使用,以任何坐标系表达的位置都可以在需要的时候转换成OpenGL ES支持的默认坐标系。

OpenGL ES坐标系没有单位。点{1, 0,0} 和点{2, 0, 0} 之间的距离是沿着X轴的1单位,但是问下自己,“1什么?是1英寸、1毫米、1英里,还是1光年?”答案是“这无关紧要”,确切地说这取决于你。你可以自由地假设距离1代表厘米还是你的3D场景中的其他单位。


注意

对于3D图形来说不定义单位可能非常方便,但是这也出现了一个挑战,就是在你想要打印你的3D场景的时候。苹果公司的iOS系统支持用于2维绘图兼容PDF的Quartz 2D,并且按照现实世界的尺寸定义了单位。现实世界的尺寸允许你在绘制几何对象的同时知道将要绘制到与打印分辨率无关的页面上的对象的大小。与此相反,与分辨率无关的定义或者渲染OpenGL几何图形的方式是不存在的。


results matching ""

    No results matching ""