2016-08-21 10 views
0

Я прочитал статью о нормализованных координатах устройства (на немецкой DGL-вики), и приведен следующий пример: «Давайте рассмотрим, что у нас был Viewport с размерами 1024 пикселя (ширина) и высотой 768 пикселей. Точка P с абсолютными, не нормированными координатами P (350/210) была бы в нормированных координатах P (-0,32/-0,59). Эти координаты теперь можно проецировать на Viewport (800x600), просто умножив нормализованные координаты устройства (аналогично векторному масштабированию) с размером окна просмотра. В этом случае результатом будет P (273/164).Вычисление координат точки зрения

Почему-то я не могу понять, как можно получить результат (I среднее 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

(где Сх/у = координата X/Y; Sx/г = Экран X/Y и Nx/y = Нормализованный X/Y).

Подключив номера на примере в:

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

... или (-.36, 0,45).

Реверсивный это, чтобы получить новые COORDS:

(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

Рад, что я могу помочь! –

Смежные вопросы