【问题标题】:How does coordinate system handedness relate to rotation direction and vertices ordering?坐标系惯用手如何与旋转方向和顶点顺序相关?
【发布时间】:2013-11-02 21:27:17
【问题描述】:

在尝试了解不同的坐标系时,我遇到了this website,其中指出: RenderMan 使用left-handed coordinate system,正旋转为clockwise,而OpenGL 使用right-handed coordinate system,正旋转为counter-clockwise

我的问题是旋转方向和坐标系惯用手是否只是两个不同的约定,还是这是数学本身的结果?

同样,我知道三角形的正面顶点必须在 OpenGL 中以counter-clokwise 方向排序。这是否也与坐标系惯用手有关,还是只是另一个不相关的约定?

第三,当一张带有x, y, z 坐标轴的随机坐标系图片被扔到我面前时,我如何分辨哪个是左撇子,哪个是右撇子? 我知道右手、中指、食指和拇指有一条规则,但似乎每个人的使用方式不同。我应该如何将我的手指与这些轴对齐?

很抱歉可能把很多不相关的东西混在一起了,但是在阅读了各种互联网资源后,我的脑海里开始融合在一起。

【问题讨论】:

  • 对于任何偶然发现这个问题但仍有疑问的人,我找到了这个链接:mathworld.wolfram.com/Right-HandRule.html。基本上,坐标系的选择决定了向量的方向,向量的方向是两个坐标轴的叉积。

标签: math geometry coordinate-systems


【解决方案1】:

一种相当常见的左手或右手方法:

  1. 双手平放,将手指指向 X 的方向。
  2. 除了食指以外的所有手指都弯曲以指向 Y。
  3. 举起你的拇指。那是 Z。

还是这样:

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

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

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

在我熟悉的大多数情况下 (YMMV),右手定则是常态。图形有时在使用左手定则时会有些麻烦。在我熟悉的情况下,这绝不是详尽无遗的,选择左手规则是因为程序员/设计师希望 Z 指向某个“自然”方向。也许有些人不喜欢 Z 指向或指向屏幕的概念。

一旦选择了特定的手性,就会对矢量方向产生影响。虽然我不确定这是不是正确的示例,因为我处理的是图像处理而不是图形,但如果使用定向线段定义多边形,那么连续线段的叉积将指向屏幕外或屏幕内。知道 2D 多边形的哪一侧朝向观察者“外”很重要,因为多边形可能代表一些在相对两侧具有不同颜色的 2D 对象。

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

试着伸出双手并这样做:

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

【讨论】:

  • 谢谢,这个答案对我真的很有帮助。
【解决方案2】:

有时候,一幅画描绘一千个字……

实际上,有几种有效的右手配置,所以选择一个并坚持下去:

【讨论】:

  • 如图所示握住您的手时,轴的顺序为 Y,X,Z。这些年来我的计算很糟糕,因为顺序不明显;我现在发现将我的小指/X 伸直和指针/Y 弯曲(基本上是“摇滚”手势,但指针弯曲 90°,拇指像你的图片一样向外指向)更有用>,从小指到大拇指对轴进行排序X,Y,Z
  • @SlippD.Thompson 我记得这就像两个手指跟踪 x/y 平面(指针在前),拇指是该平面的法线向量(z 轴)。
  • "其实有几个有效的右手配置",不,只有第一个配置有效。 RHS 描述了一个 直接 坐标系,拇指表示 x,食指表示 y,中指表示 z,例如ECEF frame is right handed。当拇指与 a 对齐并且索引与 b 对齐时,此 RH 规则还描述了 a 和 b 的叉积的方向。这是记住direction of the cross product 的常用记忆技巧。
【解决方案3】:

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

这些法线用于从光照计算到渲染确定的所有事情。如果三角形的法线指向与视图向量相同的方向,则它背对相机并且不会被绘制。

如果三角形的法向量朝向与视图向量相反的方向(也就是朝向相机),那么三角形是可见的并且会被绘制出来。

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

回答您的第三个问题:如果您有几个顶点要离开,并且您知道哪个轴是从前到后的,那么您可以轻松判断它是右手系统还是左手系统。在右手系统中,z 会随着您远离相机而减小。在左手系统中,z 增加。

您可以在此网站上查看如何放置您的手: Right/Left handed coordinate systems

【讨论】:

  • 谢谢,但您似乎只回答了我的两个问题(可能我的措辞不够清楚)。 1)So, the ordering of vertices in polygons and the coordinate system handedness are two independent conventions, did I understand you right ? 2)Does the direction in which positive rotation transformation happens depend on the coordinate system handedness or are these two conventions unrelated ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多