我正在研究一些计算机图形的东西,无法找出解决一个问题的方法:
我在3D空间中有三个点,每个点用(x,y,z)tupple定义。三个点一起形成一个三角形。设点名称为A,B和C,因此三角形为ABC。
现在我想形成一个边界矩形,这样AC就是其中一个边。 B点位于矩形的对侧。现在我想将矩形内的任意点(p)映射到标准化的UV坐标,所以:
无论如何,我觉得我很高兴找到你:
vec3 AC = vec3(C - A);
vec3 Ap = vec3(p - A);
float u = dot(Ap, AC)/dot(AC, AC);
但我无法弄清楚如何找到V. 当我使用GLSL时,如果答案将使用像dot,cross或GLSL所拥有的矩阵内容,那将非常受欢迎。
答案 0 :(得分:0)
找到u
用于点 B
uB = dot(AB, AC)/dot(AC, AC);
B 在AC
上的投影:
B' = A + uB * AC / length(AC)
现在我们有了 B'B 向量,可以在其上进行类似于AC上的投影的投影,并计算v