左手坐标系与右手坐标系

1.​​定义与判定方法​

  • ​右手坐标系​

    • 伸出右手,让拇指指向X轴的正方向,食指指向Y轴的正方向,此时中指自然弯曲的方向就是Z轴的正方向。在这个坐标系中,Z轴垂直于X、Y轴并且指向“自己”(向外)。例如,在数学中的笛卡尔坐标系通常采用右手坐标系。

  • ​左手坐标系​

    • 伸出左手,拇指指向X轴正方向,食指指向Y轴正方向,中指自然弯曲的方向为Z轴正方向,但与右手坐标系不同,它指向屏幕外(对于平面图形理解来说)。在计算机图形学中,像Unity游戏引擎就使用左手坐标系。

属性​​

​​右手坐标系​​

​​左手坐标系​​

​Z轴方向​

垂直于纸面向外(右手法则)

垂直于纸面向内(左手法则)

​叉积规则​

X × Y = Z

X × Y = -Z

​正旋转方向​

逆时针为正

顺时针为正

​典型应用​

DirectX、Unity(世界坐标)、UE4/5、Babylon.js

OpenGL/WebGL、Three.js、Blender、Maya

注:Unity世界坐标为左手系,但摄像机空间为右手系(Z轴正向为摄像机前方)

三维坐标系

世界坐标系

  • 定义​

    • 世界坐标系是一个固定的、全局的坐标系,它定义了整个场景的空间布局。所有的物体都可以相对于这个坐标系来确定自己的位置。

    • 例如,在一个大型的3D游戏场景中,世界坐标系的原点可能设定在场景的中心,X轴指向东边,Y轴指向天空,Z轴指向北边。

  • 应用场景​

    • 在游戏开发中,当规划整个游戏场景的布局,如放置建筑物、地形等元素时,世界坐标系起着关键的作用。在机器人学中,世界坐标系可以用来描述机器人在一个大环境中的位置

局部坐标系

  • 定义​

    • 局部坐标系是相对于某个特定物体或对象建立的坐标系。它的原点和坐标轴方向取决于该物体。

    • 例如,一个角色模型有自己的局部坐标系,原点可能在角色的重心位置,X轴指向角色的前方,Y轴指向角色的上方,Z轴指向角色的右侧。

  • ​应用场景​

  • 在游戏角色动画中,角色的肢体运动是相对于其局部坐标系进行的。比如手臂的摆动,是在以角色肩部为原点的局部坐标系内进行角度的计算和变换的。在机械工程中,对于一个复杂的机械部件,如发动机,也可以建立局部坐标系来分析其内部零件的运动和位置关系。

相机坐标系

  • 定义​

    • 相机坐标系是以相机的光心为原点建立起来的坐标系。它的坐标轴方向与相机的朝向有关,通常X轴指向相机的右方,Y轴指向相机的上方,Z轴指向相机的前方(即镜头所对着的方向)。

    • 例如,在摄影中,当我们想要确定画面中的物体在相机视角下的位置时,就需要用到相机坐标系。

  • ​应用场景​

    • 在计算机图形学的渲染过程中,将3D场景中的物体转换为2D图像时,相机坐标系起着关键的作用。它决定了哪些物体在相机的视野范围内,以及它们在图像中的位置。

屏幕坐标系

  • ​定义​

    • 屏幕坐标系是用于描述屏幕上的像素位置的坐标系。它的原点通常在屏幕的左上角,X轴向右延伸,Y轴向下延伸。

    • 例如,在网页设计或者手机APP界面开发中,我们根据屏幕坐标系来确定按钮、文本框等元素在屏幕上的显示位置。

  • ​应用场景​

    • 在图形用户界面(GUI)开发中,无论是桌面应用还是移动应用,屏幕坐标系都被广泛用于布局和定位各种界面元素。

补充

为什么有左手与右手坐标系

一、数学起源:右手系的“天然优势”​

数学中,​​右手坐标系是笛卡尔坐标系的传统定义​​,其核心依据是​​右手螺旋定则​​(Right-hand Rule)。这一规则最早由法国数学家达朗贝尔(Jean le Rond d'Alembert)在18世纪提出,后被广泛接受为数学与物理的标准:

  • 右手的拇指、食指、中指两两垂直,分别对应X、Y、Z轴正方向,符合人类对“三维空间延伸”的直觉(如:X向右、Y向上、Z向前/向外)。

  • 叉积运算(向量叉乘)在右手系中满足 ​​X×Y=Z​​,这与物理中的力矩、角动量等矢量方向完全一致(例如,绕Z轴旋转的力矩方向由右手定则确定)。

因此,​​数学与理论物理领域天然倾向于右手系​​,它保证了公式的一致性和计算的简洁性。

二、计算机图形学的“实用主义”转向​

当数学理论进入计算机图形学应用时,​​硬件限制与显示需求​​推动了左手系的普及。早期计算机图形系统(如20世纪70-80年代的图形工作站)面临两个关键问题:

​​1. 屏幕显示的“深度”表示​​

显示器的光栅扫描是从左到右、从上到下(类似纸张的阅读顺序),而3D图形需要将物体投影到2D屏幕。此时,​​Z轴(深度轴)的方向需要与“近大远小”的透视规律匹配​​:

  • 在左手系中,Z轴正方向指向屏幕​​内部​​(背离观察者),物体的Z值越大表示离相机越远。这种设定下,投影变换(如透视投影矩阵)的计算更直接——只需将Z值映射到深度缓冲区(Depth Buffer)即可,无需额外符号调整。

  • 若使用右手系(Z轴向外),则离相机越远的物体Z值越小,投影时需反转Z轴方向,增加了计算复杂度。

​​2. 硬件内存与寄存器的“低位优先”设计​​

早期图形硬件(如帧缓冲、深度缓冲)的内存地址或寄存器通常按“低位到高位”映射屏幕坐标(例如,屏幕左下角为原点(0,0),右上角为(maxX, maxY))。左手系的Y轴向上与屏幕Y轴(向下)方向相反,但通过简单的坐标变换(如Y' = maxY - Y)即可适配,而Z轴的“向内”方向更符合深度缓冲的存储逻辑(深度值越大,离相机越远)。

​​三、行业标准的“路径依赖”​​

随着计算机图形学的发展,不同领域逐渐形成了​​基于硬件传统的行业标准​​,进一步固化了左右手系的选择:

​​1. 游戏与实时渲染领域(左手系主导)​​

  • ​DirectX​​(微软的图形API)选择左手系,主要因早期Xbox/PC游戏的硬件(如显卡)更适配左手系的深度计算。后续Unity、Unreal Engine等引擎为降低开发门槛,直接继承了DirectX的坐标系设定。

  • ​Babylon.js​​(网页3D引擎)同样基于DirectX的思路,因早期WebGL硬件兼容性问题,选择左手系以简化浏览器端的图形计算。

​​2. 影视建模与数学工具领域(右手系主导)​​

  • ​OpenGL​​(跨平台图形API)延续了数学传统,采用右手系(Z轴向外)。其设计目标包括与数学软件(如MATLAB)的兼容,因此叉积、旋转方向等规则完全遵循右手定则。

  • ​3ds Max、Maya​​等3D建模软件选择右手系(或混合系),因艺术家需要与数学工具(如CAD软件)协同工作,右手系的叉积方向(如法线计算)更符合物理直觉。

​​四、“差异”的本质:应用场景的适配​​

两种坐标系的核心差异(Z轴方向、旋转方向)本质上是​​“数学理论”与“工程实践”的妥协​​:

  • 数学需要统一的规则(右手系)以保证理论的普适性;

  • 工程(如图形渲染、游戏开发)需要适配硬件特性(如屏幕显示、内存存储)以提高效率。

​​总结:为什么会有两种?​​

两种坐标系的存在是​​历史传统、数学理论、硬件限制与应用需求共同作用的结果​​:

  • 右手系是数学与理论的“天然语言”,保证了公式的一致性;

  • 左手系是工程实践的“实用选择”,适配了早期图形硬件的显示与计算需求;

  • 行业标准的“路径依赖”(如DirectX vs OpenGL)进一步固化了二者的应用场景。

理解二者的差异,本质上是理解“理论如何落地为工程”的过程——没有绝对的“优劣”,只有“是否适配具体场景”。