坐标系的左右手定则与旋转方向和顶点顺序有何关系?

15
当我试图理解不同的坐标系时,我发现了这个网站,它指出: RenderMan使用左手坐标系,正方向旋转为顺时针,而OpenGL使用右手坐标系,正方向旋转为逆时针
我的问题是旋转方向和坐标系惯用手是否只是两种不同的惯例,还是这是来自于数学本身?
同样地,我知道OpenGL中三角形的正面顶点必须以逆时针的方向排序。这也与坐标系惯用手有关,还是其他无关的惯例?
第三,当一个随机坐标系的图片放在我面前,并且轴的标记为x,y,z时,我如何判断哪一个是左手系,哪一个是右手系? 我知道有一个右手法则和中指、食指和拇指,但每个人似乎都用不同方式使用它。我应该如何将我的手指与这些轴对齐?

抱歉可能会混杂很多无关的东西在一起,但是在阅读各种互联网资料后,事情开始在我的脑海中融合在一起。


对于任何看到这个问题仍然感到疑惑的人,我找到了这个链接:http://mathworld.wolfram.com/Right-HandRule.html。基本上,坐标系的选择决定了两个坐标轴的叉积结果向量的方向。 - jcxz
3个回答

10

一种适用于左手或右手的常见方法:

  1. 将手展平,将手指朝向X方向。
  2. 将除食指以外的其他所有手指弯曲,指向Y方向。
  3. 抬起拇指,这就是Z。

同样有:

  • +x = 食指
  • +y = 中指(和/或无名指和小指弯曲90度向内)
  • +z = 大拇指伸出

给定一个XYZ坐标系,确定正旋转:

  1. 将拇指指向+X、+Y或+Z方向。
  2. 你弯曲并指向的手指的方向是正旋转的方向。

在我熟悉的大多数情况下(因人而异),右手法则是惯用法。有时候使用左手法则的图形可能会有些混乱。我所熟悉的情况,远非穷尽,选择左手法则是因为程序员/设计师想要Z指向某个“自然”的方向。也许有些人不喜欢Z指向屏幕内部或外部的概念。

一旦确定了某种惯用法,则会对矢量方向产生后果。虽然我不确定这是否是正确的例子,因为我处理的是图像处理而不是图形处理,但如果使用定向线段定义多边形,则连续线段的叉积将指向屏幕内部或外部。了解2D多边形的哪一侧面向观察者很重要,因为多边形可能代表某个2D对象,在对面有不同颜色。

更一般地说,选择惯用法将决定如何处理叉积。当你用手指和拇指指向时,“X叉乘Y等于Z”就是你所做的。

试着伸出两只手并做到这一点:

  1. 将左右手的手指直指前方,远离身体。这就是X。
  2. 将手指向左弯曲——翻转其中一只手。这就是Y。
  3. 现在伸出你的大拇指。它们指向相反的方向。

2
谢谢,这个答案对我非常有帮助。 - jcxz

5
有时候,一张图片胜过千言万语...

enter image description here

实际上,有几个有效的右手配置,所以选择一个并坚持使用它:

alternatives


当你握住手时,轴的顺序是_Y,X,Z_。多年来,我做了错误的计算,因为顺序并不明显;现在我发现将小指/X伸直和食指/Y弯曲(基本上是“摇滚”手势,但是食指弯曲90度,拇指向外指向你的图片),这样可以将轴从小指到拇指排序_X,Y,Z_,更加有用。 - Slipp D. Thompson
@SlippD.Thompson 我记得这是用两个手指在x/y平面上追踪(先用指针),然后拇指是从那个平面垂直的法向量(z轴)。 - Drew Noakes
实际上,有几种有效的右手配置,不只是第一种配置是有效的。RHS描述了一个直接的坐标系,拇指表示x轴,食指表示y轴,中指表示z轴,例如ECEF框架是右手定则。当拇指与a对齐,食指与b对齐时,这个RH规则也描述了a和b的叉积的方向。这是记住叉积方向的常用记忆技巧 - mins

0

左/右手坐标系及其各自的顶点旋转是不同的约定。顶点的旋转很重要,因为它决定了法线面的方向。

这些法线用于从光线计算到渲染确定的所有内容。如果三角形的法线指向与视图向量相同的方向,则它面向远离摄像机的方向,将不会被绘制。

如果三角形的法线向量朝向视图向量的相反方向(换句话说,面向相机),则三角形是可见的,并且将被绘制。

由于在右手和左手系统中z方向(z通常被认为是计算机图形中的“前后”方向,也可以是x或y)翻转,所以向量的“旋转”肯定很重要。

回答您的第三个问题:如果您有一些顶点,并且知道哪个轴是前后方向,那么您可以轻松地判断它是右手还是左手系统。在右手系统中,z随着远离摄像机而减小。在左手系统中,z增加。

您可以在以下网站上了解如何定位您的手: 右/左手坐标系


谢谢,但你好像只回答了我的两个问题中的两个(可能是我的措辞不够清晰)。 1)那么,多边形中顶点的排序和坐标系的左右惯例是两个独立的约定,我理解得对吗? 2)正旋转变换发生的方向是否取决于坐标系的左右惯例,或者这两个约定无关? - jcxz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接