三角形的边界矩形和规范化坐标

时间:2018-06-03 22:38:14

标签: vector glsl rectangles normals

我正在研究一些计算机图形的东西,无法找出解决一个问题的方法:

我在3D空间中有三个点,每个点用(x,y,z)tupple定义。三个点一起形成一个三角形。设点名称为A,B和C,因此三角形为ABC。

现在我想形成一个边界矩形,这样AC就是其中一个边。 B点位于矩形的对侧。现在我想将矩形内的任意点(p)映射到标准化的UV坐标,所以:

  • U表示点p与AC矢量的投影距离A的距离。
  • V表示矩形的正交部分。有点难以解释,但看到图片。

无论如何,我觉得我很高兴找到你:

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

但我无法弄清楚如何找到V. 当我使用GLSL时,如果答案将使用像dot,cross或GLSL所拥有的矩阵内容,那将非常受欢迎。

Clarification picture

1 个答案:

答案 0 :(得分:0)

找到u用于点 B

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

B AC上的投影:

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

现在我们有了 B'B 向量,可以在其上进行类似于AC上的投影的投影,并计算v

相关问题