Как преобразовать координаты 3D-мира в координаты 3D-камеры

У меня есть входные 3D-векторные точки в мировой системе координат. Может ли кто-нибудь описать или предоставить ссылку на ресурс, который поможет мне понять и реализовать необходимое преобразование и сопоставление матриц для преобразования в координаты камеры? Изображение для этого http://www.mathworks.in/help/matlab/visualize/chview3.gif Я знаю координаты точки обзора на этом изображении в мировых координатах и ​​конвертирую их в координаты камеры


person user2177232    schedule 20.10.2014    source источник


Ответы (1)


Вы должны применить две математические операции:

  1. Сместите все координаты на координаты точки обзора, но в противоположном направлении. После этого точка обзора становится новым началом, и все координаты выражаются в соответствии с ним.

Пример ('|' просто обозначает скобки вектора)

|x'|   |x| - |x_vp|
|y'| = |y| - |y_vp|
|z'|   |z| - |z_vp|
  1. Поверните координаты. например сначала вокруг Z, затем Y. Это делается с помощью двух матриц вращения:

Z:

|x''|   | cos a    -sin a    0 |   |x'|
|y''| = | sin a     cos a    0 | * |y'|
|z''|   |  0         0       1 |   |z'|

Y:

|x'''|   | cos b    0    -sin b |   |x''|
|y'''| = |  0       1      0    | * |y''|
|z'''|   | sin b    0     cos b |   |z''|

Например, если ваш VP находится на (1, 1, 1), вы сначала сдвинете его так, чтобы старое начало координат теперь находилось на (-1, -1, -1) . Камера по-прежнему смотрит в положительном направлении оси x, поэтому вы должны повернуть ее на 225 градусов вокруг оси z (теперь ориентируясь на старую ось z), а затем на 45 градусов вокруг оси y, чтобы указать точно на старое начало координат.

Однако вы вращаете не камеру, а все пространство вокруг камеры, поэтому вам придется умножать углы на -1.

Дополнительную информацию можно найти на странице http://en.wikipedia.org/wiki/Rotation_matrix.

Если вы не знаете матричного умножения, в первой главе это показано.

person sweber    schedule 20.10.2014
comment
Если мы хотим узнать координаты поверхностей (мир) из начала точки обзора, как преобразовать ..? иллюстрация bigladdersoftware.com/epx/docs/8-0 /инженерная ссылка/медиа/ - person user2177232; 20.10.2014
comment
Поверхности определяются точками bz, например. углы. Просто конвертируйте баллы. Даже в математических плоскостях они могут быть выражены с помощью векторов. Просто конвертируйте их. - person sweber; 20.10.2014