【问题标题】:Normalized Device Coordinates标准化设备坐标
【发布时间】:2013-03-28 22:24:51
【问题描述】:

我正在编写一个处理 2D 图形形状的库。

我只是想知道为什么我的坐标系的 x 轴和 y 轴都应该在 [-1, 1] 范围内

而不是 [0, width] 代表 x 和 [0, height] 代表 y ?

我选择了后一种系统,因为我觉得实施起来很简单。

【问题讨论】:

  • 为什么 Y 没有 为什么像在屏幕空间中那样向下移动时增加?数学上更简单。这就是我们进行屏幕和世界空间变换的原因,以便我们可以使用对每个对象有意义的任何坐标系。
  • 如果我只使用你的库,我怎么能写一个程序,在不同的分辨率下显示相同的图像,而不用 normalzied 坐标?
  • @MichaelDorgan 我不太清楚你的意思。

标签: graphics 2d coordinates coordinate-systems


【解决方案1】:

来自 Jim Blinn 的 图形管道之旅,第 1 页。 138.

让我们从最初看起来最简单的转换开始:将设备坐标标准化为像素空间。变换是

s_x * X_NDC + d_x = X_pixel
s_y * Y_NDC + d_y = Y_pixel

用户/程序员在 NDC 中完成所有屏幕设计。 NDC 向我们隐瞒了三个令人讨厌的硬件现实:

  1. xy的实际像素数。

  2. xy 中的像素间距不均匀。

  3. Y 坐标的向上与向下。 NDC 到像素的转换将在必要时反转 Y,以便 NDC 中的 Y 指向上方。

...

s_x = ( N_x - epsilon ) / 2
d_x = ( N_x - epsilon ) / 2

s_y = ( N_y - epsilon ) / (-2*a)
d_y = ( N_y - epsilon ) / 2

epsilon = .001
a = N_y/N_x  (physical screen aspect ratio)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-09
    • 2020-02-06
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多