Вы должны сделать тот же расчет, что и WebGL. Требуется трехмерная точка [X,Y,Z]
до однородной точки [x,y,z,w]
через
[x,y,z,w] = pMatrix * mvMatrix * [X,Y,Z,1]
Чтобы получить координаты пространства клипа, разделите на w
:
[x/w,y/w,z/w]
x/w
и y/w
находятся в диапазоне [-1,1]. Чтобы преобразовать их в координаты области просмотра, масштабируйте их в соответствии с размером холста.
[x/w,y/w] -> [(1 + x/w)*canvas.width/2, (1 - y/w)*canvas.height/2]
Обратите внимание, как 'направление' координаты y изменяется в последнем преобразовании.
Для получения дополнительной информации вы можете Google "графический конвейер". Например. http://en.wikipedia.org/wiki/Graphics_pipeline