标准化设备坐标

Jon*_*nas 5 graphics 2d coordinates coordinate-systems

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

我只是想知道为什么我的坐标系在x轴和y轴上的 范围都是[-1,1]在此输入图像描述

而不是[0,宽度]为x而[0,高度]为y? 在此输入图像描述

我选择了后一种系统,因为我觉得它很容易实现.

lus*_*oog 7

来自Jim Blinn的A Trip Down The Graphics Pipeline,p.138.

让我们从最初看起来最简单的变换开始:规范化设备坐标到像素空间.转型是

s_x * X_NDC + d_x = X_pixel
s_y * Y_NDC + d_y = Y_pixel
Run Code Online (Sandbox Code Playgroud)

用户/程序员在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)
Run Code Online (Sandbox Code Playgroud)