Как преобразовать задние точки в 2d в 3d с известной матрицей ортогональной проекции (камеры)? - PullRequest
0 голосов
/ 02 января 2019

У меня есть массив с 2d точками, которые я преобразую из 3d в 2d по следующему уравнению:

https://wikimedia.org/api/rest_v1/media/math/render/svg/198f15da062c7ce00598d7a2f9bd8169d7042ed3

Как я могу преобразовать точку обратно в 3D?

Я использовал матрицу вида сверху вниз, которая изображена выше.Найдено в Википедии: https://en.wikipedia.org/wiki/Orthographic_projection

#To 2D from 3d:
points2D = np.array([np.matmul(camera_pos, point) for point in points3D])[:,:2]

1 Ответ

0 голосов
/ 02 января 2019

Вы не можете преобразовать его обратно, используя только проецируемые точки.Обратите внимание, что ваша проекция в основном просто смотрит на значения (x,y) и отбрасывает значение z, поэтому невозможно узнать, что было z после этого.

Например, рассмотрим точки u = [1,2,3] и v=[1,2,-3].Они оба проецируются на [1,2,0], поэтому нет никакого способа узнать, следует ли нам превратить [1,2,0] в u или v, когда мы попытаемся инвертировать (отменить) проекцию.

В терминахматричная операция, это потому, что матрицы проекций не являются обратимыми (кроме единичной матрицы).

Вам понадобится больше информации, чем только спроецированные точки, чтобы иметь возможность восстановить исходные точки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...