webGL入门-坐标系统

839 阅读2分钟

坐标系

由于webGL处理的是三维图形,所以它使用三维坐标系统(笛卡尔坐标系),具有X轴,Y轴,Z轴。

在任何坐标系统中,轴的方向非常重要,在webGL中,当你面向计算机屏幕时,X轴的水平的(正方向为右),Y轴的垂直的(正方向为上),Z轴垂直于屏幕(正方向为外)

image.png

这套坐标系被称为右手坐标系,因为可以用右手来表示。

image.png

为什么是右手坐标系

坐标系是人为设置的,用于当做参照物一种位置系统。所以实际上即可以使用左手坐标系也可以使用右手坐标系。

当你确定使用一种方向的坐标系后,后续都要使用同一种方向的坐标系而不再改变,这样才能保证位置计算的正确。

由于历史原因,早起的图形库中大部分都采用了右手坐标系,所以右手坐标系已经成为了传统,webGL中也继承了这种传统,使用右手坐标系

webGL坐标系范围

WebGL中的坐标限于(1,1,1)和(-1,-1,-1)

如果您将屏幕将WebGL图形投影为立方体,则立方体的一个角将为(1,1,1),相对的角将为(-1,-1,-1)。

WebGL不会显示超出这些边界的任何东西。

image.png

由于在屏幕上是二维的,所以webGL坐标转换成canvas坐标后,与canvas坐标的对应关系为

  • canvas的中心点对应:(0.0, 0.0, 0.0)
  • canvas的左边缘、右边缘对应:(-1.0, 0.0, 0.0)、(1.0, 0.0, 0.0)
  • canvas的上边缘、下边缘对应:(0.0, 1.0, 0.0)、(0.0, -1.0, 0.0)

image.png

所以当你给定一个webGL坐标(0.0, 0.0, 0.0)后,不管canvas绘图区域有多大,都将显示在canvas区域的中心点位置