gpt4 book ai didi

opengl - OpenGL坐标系是左手坐标系还是右手坐标系?

转载 作者:行者123 更新时间:2023-12-02 02:55:21 25 4
gpt4 key购买 nike

我正在尝试了解 OpenGL 坐标系。但是,一些教程说默认坐标系是左手坐标系(请参阅 http://www.c-sharpcorner.com/UploadFile/jeradus/OpenGLBasics11172005014307AM/OpenGLBasics.aspx ),而其他教程则说默认坐标系是右手坐标系(请参阅 http://www.falloutsoftware.com/tutorials/gl/gl0.htm )。哪个是对的?我知道我们可以通过镜像将一个坐标转换为另一个坐标,但我想知道默认坐标。

最佳答案

这里有些困惑。

enter image description here

OpenGL 在对象空间和世界空间中是右手

但是在窗口空间(又名屏幕空间)中,我们突然变成了左撇子

这是怎么发生的

我们从右手到左手的方式是 glOrtho 中的负 z 缩放条目。或glFrustum投影矩阵。将 z 缩放 -1(同时保持 x 和 y 不变)具有改变坐标系的旋向性的效果。

对于 glFrustum,

enter image description here enter image description here

farnear 应该是正数,far> near。假设=1000,=1。那么C= -( 1001 )/( 999 ) = -1.002 。

参见here了解更多详细信息和图表。

正交角度来看,glOrtho 生成如下矩阵:

enter image description here

这里,底部顶部只是the coordinates for left vertical, right vertical, bottom horizontal, top horizontal clipping planes (resp) .

但是,平面的指定方式不同near 参数定义为

  • 近:到较近深度剪裁平面的距离。如果飞机位于观察者后面,则此距离为负值。

远方:

  • zFar 到更远深度裁剪平面的距离。如果飞机位于观察者后面,则此距离为负值。

这里我们有一个典型的规范 View 体积

canonical

由于 z 乘数为 (-2/(远-近)),减号有效地将 z 缩放 -1。这意味着“z”在 View 变换期间转向左手,大​​多数人都不知道,因为他们只是在 OpenGL 中作为“右手”坐标系工作。

所以,如果你打电话

glOrthof(-1, 1, -1, 1, 10, -10) ; // near=10, FAR=-10,

那么近平面在您前面 10 个单位。你在哪里?为什么,在原点,x 轴在你的右边,y 轴在你的头顶,你的 Nose 朝下负 z 轴(这是默认的 "By default, the camera is situated at the origin, points down the negative z-axis, and has an up-vector of (0, 1, 0)." ) 。所以近平面位于 z=-10 处。远平面位于您身后10 个单位,位于 z=+10

关于opengl - OpenGL坐标系是左手坐标系还是右手坐标系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4124041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com