提问人:Roberto Ferrero 提问时间:11/13/2023 最后编辑:Roberto Ferrero 更新时间:11/13/2023 访问量:39
用于查找包含给定点的三角形的矩形角的函数
Function to find the rectangle angle of the triangle that contains a given point
问:
在 webgl / 片段着色器上下文中。 我有一个紫外线空间。如图所示,由直角三角形填充。 请注意,“c0”位于 0.5 , 0.5。 “交流”侧为 0.25 “BC”侧为 0.1666 (1/6) 我正在寻找一种方法,给定 uv 坐标中的点“p”,获得包含该点的三角形的直角“c”的坐标。
编辑:我在 webgl 中工作并寻找如下功能: vec2 getAngleC(vec2 p)
我尝试自己创建函数并使用 ChatGPT 4,这会让人感到困惑。
答:
0赞
matt
11/13/2023
#1
首先找到点所在的正方形。
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。也许这是在着色器中,您可能需要稍微更改一下。
评论