三角形的边界矩形和归一化坐标
Bounding rectangle for a triangle and normalized coordinates
我正在处理一些计算机图形方面的工作,但无法找出一个问题的解决方案:
我在 3D 中有三个点 space,每个点都用 (x,y,z) 元组定义。三个点一起构成一个三角形。设点名为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 时,如果答案将使用点、十字或任何 GLSL 具有的矩阵东西,我将非常欢迎。
Clarification picture
找到 u
点 B
uB = dot(AB, AC)/dot(AC, AC);
B 到 AC
的投影:
B' = A + uB * AC / length(AC)
现在我们有 B'B 向量,可以在其上进行类似于 AC 投影的投影并计算 v
我正在处理一些计算机图形方面的工作,但无法找出一个问题的解决方案:
我在 3D 中有三个点 space,每个点都用 (x,y,z) 元组定义。三个点一起构成一个三角形。设点名为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 时,如果答案将使用点、十字或任何 GLSL 具有的矩阵东西,我将非常欢迎。
Clarification picture
找到 u
点 B
uB = dot(AB, AC)/dot(AC, AC);
B 到 AC
的投影:
B' = A + uB * AC / length(AC)
现在我们有 B'B 向量,可以在其上进行类似于 AC 投影的投影并计算 v