Re: 3D -> 2D ???
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.03.02 01:50
Оценка:
Здравствуйте 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)
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.