2016-10-15 2 views
0

Vector Porjection through a pointпроекции вектора через точку и на плоскости

Мне нужно вычислить местоположение желтой звезды на плоскости, в плоскости плоской Tangent Space.

Так что сначала мне нужно проецировать вектор из глаза через розовый квадрат и найти результирующее местоположение на плоскости (найти желтую звезду).

Все уже в касательном пространстве. Поэтому я знаю расположение и направление глаза и расположение розового квадрата относительно центра плоскости (касательного пространства).

Полученная желтая звезда должна находиться на плоскости. Поэтому его положение относительно направления синей стрелки всегда должно быть нулевым. В приведенном выше изображении он будет иметь положительное значение для своего положения относительно зеленых и красных стрелок.

Я пытался выяснить, как это сделать, используя математику, такую ​​как Vector Projection, но я не могу обернуться вокруг нее.

+0

Решите уравнение линии (зрения) для 'z = 0'. – ja72

ответ

1

Таким образом, камера имеет трехмерный векторный вектор r и вектор направления e. Плоскость определяется z=0, которые вы используете на уравнение линии

z = r_z + t * e_z = 0 } t = -r_z/e_z 

координату которые затем

x = r_x + t * e_x 
y = r_y + t * e_y 

Я полагаю, что все уже выражается в желаемой системе координат с синей вдоль z -axis.

+0

Большое спасибо! Я думаю, что выбывание из средней школы в 16 лет не помогло мне. Да все находится в касательной системе пространства/координат. Я предполагаю, что ** e ** должен быть _normalized_ vector. Мне потребуется немного, чтобы проверить это, но я вернусь позже и отмечу это как ответ, если он сработает. :) – user2236034

+0

На самом деле ** e ** не нормализуется, но должен иметь ненулевой компонент _z_. Если оно нормализовано, то 't' - это расстояние от плоскости _xy_ точки. – ja72

+1

Мне пришлось добавить 'y = ((p.y <0)? -y: y);' не знаю, почему. :) И для почти всех моих самолетов мне пришлось использовать swap x и y. Может быть, потому, что в конце я читаю пиксель от текстуры, которая находится на плоскости, и, вероятно, это правда, что на самом деле у меня нет всего в «желаемой системе координат». Но в целом, с небольшими трюками, он работает! Thx: D – user2236034

Смежные вопросы