Понимание трехмерного пространства - PullRequest
1 голос
/ 27 июля 2010

Я запутываю себя, ужасно осознавая концепцию построения на трехмерной плоскости, если я смотрю вниз по оси -Z, чтобы поместить объект перед собой, я просто делаю значение Z Отрицательным и оставляю его позади, я простосделать это положительным .. но .. как я могу положить объекты слева или справа?Извините, я понимаю, что это глупый вопрос, но тем не менее это сбивает меня с толку

Example

Я рисую квадрат в (-3, -2,10; -3,2, 10; 3, -2, 10; 3, 2, 10) как бы я нарисовал что-то справа или слева?

Ответы [ 6 ]

3 голосов
/ 27 июля 2010

Я нарисовал что-то вроде этого на листе бумаги:

http://homepages.inf.ed.ac.uk/rbf/CVDICT/CVFIG5/img14.png

Нарисуйте + и - на концах оси. Помогает отслеживать при пробивании цифр.

В вашем случае это будет -Z от вас или "в" экран.

3 голосов
/ 27 июля 2010

Ось X определяет размерность влево-вправо, ось Y определяет размерность вверх-вниз, с отрицательными значениями влево и вниз, положительными значениями вправо и вверх.Поэтому сместите ваш рисунок в положительном направлении x (т.е. добавьте некоторое значение ко всем значениям x в вашем квадрате), чтобы переместить его вправо.

2 голосов
/ 27 июля 2010

Оставьте ось Z такой же и двигайтесь по оси X.

влево и вправо - субъективное отклонение, потому что оно зависит от того, как вы его видите, но я предполагаю, что вы выглядите плоско на оси x-y, а ось z «направлена» от вас.

Итак, в вашем случае: (-3+a,-2,10; -3+a, 2, 10; 3+a,-2, 10; 3+a, 2, 10) где a - насколько вы хотите переместить его вправо

если вы сделаете негатив, он сместится влево (по оси X).

Поскольку ваша начальная точка равна -3, а ваша конечная точка равна 3, ваша ось Y будет в середине вашего объекта. Таким образом, ваша начальная точка должна быть 3, а конечная точка 9 te будет справа от объекта. -> a = + 6

если вы хотите перейти влево: (начальная точка-предыдущий объект) - (ширина объекта) = (-3) - (6) = - 9 -> a = -9

Для вращения объектов

посмотрите этот веб-сайт у него очень простое и простое объяснение. Я нахожу это очень читабельным

1 голос
/ 28 июля 2010

Относительно используемой системы координат: большинство учебников используют праворукие.Некоторые исходники (DirectX, PBRT) используют левую.

В правой системе координат ваш большой палец - х.Следующие оси располагаются в том же порядке, что и остальные пальцы (Y = индекс, ...).

Теперь переместите руку так, чтобы X было направо к правому краю экрана, Y - вверх, а Z -к вам.Именно так OpenGL «видит» мир.

Это почти все, что вам нужно, чтобы знать .

1 голос
/ 27 июля 2010

Ну, в трехмерной декартовой системе координат у вас есть три перпендикулярных оси X , Y и Z .

Направления, такие как вправо, влево, сверху или спереди, хотя всегда субъективны и могут быть просто интерпретированы относительно камеры . Все операции с этими координатами (вращение, перемещение, векторная математика в целом) независимы от этого представления.

Теперь, если вы определите камеру, вы также определили направления. общее определение (как в DirectX ) - это камера

  • находится в источнике
  • смотрит вдоль оси Z
  • имеет направление вверх вдоль оси Y

Следовательно, правое / левое определяется через положительные / отрицательные координаты X, то же самое для верх / низ с направлением Y или вперед / назад по оси Z.

Но это никогда не абсолютная вещь. Учитывая другую камеру (например, повернутую, перемещенную), все выглядит иначе. Просто посмотрите, как все движется, когда вы смотрите на них с ног на голову.

Это изображение очень хорошо показывает, как все зависит от камеры (почему Stackoverflow не может обрабатывать .svg-graphics?)

0 голосов
/ 27 июля 2010

Ваши координаты (x, y, z).

Вы описали перевод квадрата в плоскость z путем изменения значений z.

Перемещение влево или вправо - это перевод вx - просто смещение значений x.

Перемещение вверх и вниз - перевод в y - просто смещение значений y.

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