Здравствуйте VGP, Вы писали:
VGP>Как при текущем разрешении монитора получить нормализованные ([-1;+1]) экранные координаты точки объекта (X, Y, Z известны) ?
VGP>Буду признателен за короткий пример.
Это преобразование выполняет матрица проекции.
x,y,z - координаты точки которую надо спроецировать на экран
ah - угол горизонтального обзора ( 0 < ah < pi )
av - угол вертикального обзора ( 0 < av < pi )
w = ctg(ah/2) котангенс, тригономерическая функция равная cos/sin
h = ctg(av/2)
X,Y - координаты на экране, есть ещё координата Z но она не используется
Zmax,Zmin - максимальная и минимальная z координаты (от 1 до 0 !!!)
q = Zmax/(Zmax-Zmin) без перспективы (без перспективных искажений) q=1
P это матрица 4х4
[ ]
[ w 0 0 0 ]
[ ]
[ 0 h 0 0 ]
[ ]
[ 0 0 q 1 ]
[ ]
[ 0 0 -q*Zmin 0 ]
[ ]
Вектор [X,Y,Z,1] = [x,y,z,1]*P;
то есть
X = x*w/((z-Zmin)*q)
Y = y*h/((z-Zmin)*q)