Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

matrix3d(
1, 0, 0, 0,
0, 0.642787609686539, 0.766044443118978, -0.00153208888623796,
0, -0.766044443118978, 0.642787609686539, -0.00128557521937308,
0, 0, 0, 1
)
[x,y]
[x,y,0,1]
[x', y', 0, w]



t = projection.convertPoint([t.x - transPoint.x - w2, t.y - transPoint.y - h2]);
return [
t[0] / t[3] + w2 + transPoint.x
t[1] / t[3] + h2 + transPoint.y
]
после умножения видовых координат [x, y, 0, 1] на матрицу проекции вы получаете однородные координаты.
t.x - transPoint.x - w2
w2 = {ширина рабочего Div}/2
transPoint.x = это смещение от начала координат
t[0] / t[3] + w2 + transPoint.x
Еще у Ламота хорошо это всё описано.
Перспективные матрицы в графическом API или дьявол прячется в деталях