查找包含给定点的三角形的矩形角的函数

问题描述 投票:0回答:1

diagram explaining the case

在 webgl / 片段着色器上下文中。 我有一个紫外线空间。如图所示,由矩形三角形填充。 请注意,“c0”位于 0.5 , 0.5 处。 “ac”侧为 0.25 “bc”边为 0.1666 (1/6) 我正在寻找一种方法,给定 uv 坐标中的点“p”,获取包含该点的三角形的直角“c”的坐标。

我尝试自己创建该函数并使用 ChatGPT 4,这似乎很困惑。

geometry
1个回答
0
投票

首先找到该点所在的正方形。

x = Math.trunc(u/ac);
y = Math.trunc(v/bc);

这给出了正方形的索引。我们可以使用广场内的局部坐标。

lx = u - x*ac;
ly = v - y*bc;

接下来你必须找到对角线的走向。让我们将左上角到右下角称为“偶数”,将右上角到左下角称为“奇数”。

sig = (x%2 + y%2)%2;

如果 sig 为 0,则您有一个偶数平方。 (如您的示例所示)。这意味着穿过正方形的线定义为。

h = bc - lx*bc/ac;
if( ly > h ){
    cx = (x+1) * ac;
    cy = (y+1)* bc;
} else{
    cx = x*ac;
    cy = y*bc;
}

cx 和 cy 是感兴趣的直角的 u,v 坐标。

情况 2. 奇数。我们的想法是一样的。

h = lx*bc/ac;

if(ly > h){
    cx = x*ac;
    cy = (y + 1)*bc;
} else{
    cx = (x+1)*ac;
    cy = y*bc;
}

我希望有帮助。我对你的问题做了一些假设,并假设你正在使用 javascript。也许这是在着色器中,你可能需要稍微改变一下。

© www.soinside.com 2019 - 2024. All rights reserved.