2016-08-21 118 views
0

我閱讀了一篇關於規範化設備座標的文章(在德國DGL維基上),並提供了以下示例: 「讓我們考慮我們有一個尺寸爲1024像素(寬)和768像素高的視口。具有絕對的,未標準化的座標P(350/210)的點P將處於標準化座標P(-0,32/-0,59)中。現在可以將這些座標投影到視口(800×600)上, (273/164)視口座標的計算

不知怎的,我不明白怎樣才能得到所提供的結果(我的標準化設備座標(類似於矢量縮放))與視口的大小。意思是273/164和-0,32/-0,59 ...有人可以向我解釋如何計算座標?

P.S. :這是文章 - https://wiki.delphigl.com/index.php/Normalisierte_Ger%C3%A4tekoordinate

謝謝!

回答

1

那篇文章絕對缺乏說明。我可以讓你成爲那裏的一部分;也許有更多數學的人可以幫助完成。

根據this answer,公式非歸一化COORDS轉換爲歸一化座標爲:

Nx = (Cx/Sx) * 2.0 - 1.0

Ny = 1.0 - (Cy/Sy) * 2.0

(其中Cx/Y =座標X/Y; SX/Y =屏幕X/Y;以及Nx/y =標準化的X/Y)。

封堵例子的號碼:

Nx = (350/1024) * 2 - 1 = -0.31640625 
Ny = 1 - (210/768) * 2 = 0.453125 

...或(-.36,0.45)。

扭轉這一來獲得新的座標:

(1 + Nx)/2 * Sx

(1 - Cy)/2 * Sx

Cx = (1 + -0.31640625)/2 * 800 = 273.4375 
Cy = (1 - 0.453125)/2 * 600 = 164.0625 

注意,Y值不匹配。這可能是因爲我的計算沒有考慮到寬高比,應該是因爲這些屏幕的寬高比爲.75,而NDC爲1. This SO answer也可能有幫助。

+0

感謝您的回答和計算!現在我懂了 ! :) – Teo

+0

很高興我能幫忙! –