Ограничительный прямоугольник для треугольника и нормализованные координаты - PullRequest
0 голосов
/ 04 июня 2018

Я работаю над компьютерной графикой и не могу найти решение одной проблемы:

У меня есть три точки в трехмерном пространстве, каждая из которых определена с помощью (x, y, z) tupple.Три точки вместе образуют треугольник.Пусть имена точек будут A, B и C, поэтому треугольник - это ABC.

Теперь я хотел бы сформировать ограничивающий прямоугольник так, чтобы AC был одной из сторон.и точка B лежит на противоположной стороне прямоугольника.Теперь я хочу отобразить произвольную точку (p) внутри прямоугольника на нормализованные координаты UV, поэтому:

  • U представляет, как далеко проекция точки p на вектор AC находится от A.
  • V представляет ортогональную часть прямоугольника.Немного сложно объяснить, но посмотрите на картинку.

Во всяком случае, я думаю, что мне хорошо найти U:

vec3 AC = vec3(C - A);
vec3 Ap = vec3(p - A);
float u = dot(Ap, AC)/dot(AC, AC);

Но я не могу понять, какнайти V. Поскольку я использую GLSL, более чем приветствуется, если в ответе будут использоваться матричные элементы, такие как точка, крестик или что-нибудь, что есть в GLSL.

Уточняющая картинка

1 Ответ

0 голосов
/ 19 июля 2018

Найти u для точки B

uB = dot(AB, AC)/dot(AC, AC);

Проекция B на AC:

B' = A + uB * AC / length(AC)  

Теперь мыиметь вектор B'B и может делать на нем проекции, аналогичные проекциям на переменный ток, и вычислять v

...