坐标系知识概述

坐标系知识概述

坐标系是一套规则,用来明确地确定一个点在空间中的位置。

在工程应用领域,坐标系会根据具体场景的需求,对纯数学坐标系进行针对性调整(针对特定领域问题优化)。核心逻辑是:数学坐标系是通用、抽象的工具,而工程坐标系需要贴合实操场景、简化计算、降低误差,因此会在原点位置、轴方向定义等方面进行适配性修改。

可以将坐标系的世界分为两大阵营:数学理论界(教科书标准)与 工程应用界(编程、图形学)。

一、数学(包括物理学)坐标系

常见类型

1. 一维坐标系:数轴

  • 构成 :一条直线(基准线)、一个原点 (0点)、一个正方向 (通常向右)、一个单位长度
  • 如何定位:用一个数字(坐标)即可。例如:点A的坐标是 3,表示它在原点右侧3个单位处;点B的坐标是 -2,表示它在原点左侧2个单位处。
  • 关键思想建立了直线上的点与实数的一一对应关系

2. 二维坐标系:平面坐标系

(1) 直角坐标系(笛卡尔坐标系)

  • 构成 :两条互相垂直、相交于原点的数轴。
    • x 轴(横轴):水平,向右为正。
    • y 轴(纵轴):垂直,向上为正。
  • 如何定位 :用一对有序数字 (x, y) 表示。
    • x 坐标(横坐标) :点到y轴的水平距离(带方向)。
    • y 坐标(纵坐标) :点到x轴的垂直距离(带方向)。
  • 例子:点P (3, 2) 表示从原点向右3个单位,再向上2个单位。
  • 核心应用:函数图像、平面几何、计算机屏幕像素定位(屏幕左上角为原点(0,0)是特例)。

(2) 极坐标系

  • 构成 :一个极点 (相当于原点)、一条极轴(从极点出发的基准射线,通常水平向右)。
  • 如何定位 :用一对 (ρ, θ) 表示。
    • 极径 (ρ) :点到极点的距离(ρ ≥ 0)。
    • 极角 (θ) :从极轴到该点连线(极径)所转过的角度(通常以弧度或度为单位,逆时针为正)。
  • 例子:点P (5, 60°) 表示在距离极点5个单位,且与极轴夹角为60°的方向上。
  • 核心应用:描述圆形、旋转、有中心辐射状的事物(如雷达、卫星天线、艺术图案)。
  • 与直角坐标的转换

3. 三维坐标系:空间坐标系

(1) 三维直角坐标系(空间直角坐标系)

  • 构成 :三条两两垂直、相交于原点的数轴(x轴, y轴, z轴)。符合右手定则(右手食指朝x轴,中指朝y轴,拇指方向就是z轴正方向,见后面手性部分)。
  • 如何定位:用三元组 (x, y, z) 表示。
  • 例子:房间角落的一个点,可以用它到两面墙和地面的距离来确定。

(2) 球坐标系

  • 思想:用距离和两个角度定位空间点,像地球的经纬度。
  • 如何定位 : (r, θ, φ)(不同领域符号习惯不同,此为物理常用)
    • r :点到原点的距离
    • θ :点与z 轴正方向的夹角(天顶角)。
    • φ :点在xOy平面上的投影与x 轴正方向的夹角(方位角)。
  • 例子:GPS定位(经度、纬度、海拔高度就是球坐标的一种变体)、描述原子中电子的位置。点P(7, 30°, 60°)表示距离原点7,与z轴夹角30°,在xoy平面上的投影与x轴夹角60°
  • 与三维直角坐标的转换
    • x = r * sinθ * cosφ
    • y = r * sinθ * sinφ
    • z = r * cosθ

上面介绍的数学中的坐标系,这是所有坐标理论的源头。

二、工程应用界(编程、图形学)

图形学编程场景下的坐标系知识,这和纯数学坐标系示右区别的。

(一)、屏幕坐标系

一般采用:原点在左上角、Y 轴向下、单位为像素,所有 2D 绘制 / 鼠标交互都基于此。相关内容可见:计算机屏幕坐标系简介 https://blog.csdn.net/cnds123/article/details/144533246

(二)、3D 图形学坐标系

3D 图形学需区分左手 / 右手坐标系,其 Z 轴方向直接影响旋转、投影的计算逻辑。

下面重点介绍3D 图形学坐标系

先了解核心概念基础

1. 基础之一:手性 (Chirality) ------ 左手 vs 右手

这是坐标系的"基因",决定了由前两个轴确定第三个轴方向的规则(叉乘法则)。

  • 右手系 (Right-Handed)
    • 判定法:伸出右手,四指从 X 轴转向 Y 轴,大拇指指向即为 Z 轴。
    • 地位:数学、物理学的绝对标准;OpenGL、Blender 采用。
  • 左手系 (Left-Handed)
    • 判定法:伸出左手,做同样的动作。
    • 地位:DirectX、Unity、Unreal Engine、Web 前端习惯采用。

图示记忆

  • 右手:大拇指(X)、食指(Y)、中指(Z) 互相垂直。
  • 左手:同样的姿势,Z 轴方向与右手刚相反。

2. 基础之二:谁是" 上" (Up Axis)

这是坐标系的"站姿"。

  • Z-UpZ 轴朝天 。来源于建筑绘图习惯(XY是地面图纸,Z是楼高)。
    • 代表:数学课本、Blender 、3ds Max 、Unreal
  • Y-UpY 轴朝天 。来源于屏幕观察习惯(XY是屏幕平面,深度变为了Z)。
    • 代表:OpenGL 、Unity 、Maya
  • Y-DownY 轴朝地 。来源于阅读习惯(从左上角开始阅读,往下行数增加)。
    • 代表:2D Canvas 、SVG 、网页 CSS 、p5.js

编程与图形学中的坐标系 (工程应用界),这里有些混乱,因为不同的厂商制定了不同的标准。将最主流的系统总结如下:

1. 建模与工业设计流派 (Z-Up 右手)

沿用了数学和建筑学的习惯。

  • 代表软件Blender3ds MaxAutoCAD
  • 配置
    • X:右 (+)
    • Y :后/里 (+) 或 前 (+) ------ 各软件定义" 前" 有歧义,但 Y 都在水平面上
    • Z:上 (+)
    • 手性:右手系。

2. 传统图形学与影视流派 (Y-Up 右手)

这是 OpenGL 定义的行业标准,影响了早期的图形工作站和 Maya。

  • 代表软件OpenGL (World Space)、MayaGodot
  • 配置
    • X:右 (+)
    • Y:上 (+)
    • Z向外 / 朝向观察者 (+) ------ 注意:这意味着看向屏幕深处是 Z 的负方向
    • 手性:右手系。

3. 当代游戏引擎流派 (Y-Up 左手)

为了让 Z 轴正方向代表"前方"(符合直觉),DirectX 和 Unity 选择了左手系。

  • 代表软件UnityMicrosoft DirectXUrsina
  • 配置
    • X:右 (+)
    • Y:上 (+)
    • Z向前 / 朝向屏幕里 (+) ------ 这符合" 前进" 的直觉
    • 手性左手系

4. 网页与 2D 延伸流派 (Y-Down 左手)

这是为了兼容网页排版习惯(原点在左上角)。

  • 代表软件p5.js (WebGL)HTML CanvasSVG
  • 配置
    • X:右 (+)
    • Y (+) ------ 这是最大的特征
    • Z :向外/朝向观察者 (+) ------ 这是为了保持Z 轴正方向是" 近大远小"
    • 手性左手系

总结表

以"你的头顶"和"你的脸"为参照物,总结各系统的轴向正方向 (+)

领域/ 系统 X 轴 (+) Y 轴 (+) Z 轴 (+) 坐标系类型 典型代表
纯数学 上 ( 头顶) 右手 Z-Up 教科书
建模 后/里 上 ( 头顶) 右手 Z-Up Blender
图形标准 上 ( 头顶) 后 ( 向外) 右手 Y-Up OpenGL, Maya
游戏引擎 上 ( 头顶) 前 ( 进屏幕) 左手 Y-Up Unity, DirectX
网页 3D 下 ( 脚底) 后 ( 向外) 左手 Y-Down p5.js, Web2D

要建立起相关坐标系统正确的空间感知,需要思考两个问题:"谁朝上?" 和 "伸左手还是右手?"。大拇指(x)、食指(y)、中指(z)。注意:"手性"(Chirality)可以用来帮助确定三个轴之间的相对关系,而不是确定轴在这个世界里的绝对朝向。

附录

坐标系交互演示 https://www.mathsisfun.com/data/cartesian-coordinates.html

Python + Ursina设计3D小游戏 https://blog.csdn.net/cnds123/article/details/155709276

相关推荐
软件开发技术深度爱好者6 个月前
概率中“都发生”和“至少一个”问题的解答
概率论·数学广角
软件开发技术深度爱好者2 年前
数学杂谈之四:学习数学的方法
数学广角·学习心得