gpt4 book ai didi

geometry - 三角形的插值

转载 作者:行者123 更新时间:2023-12-03 23:28:48 26 4
gpt4 key购买 nike

我有一个单位直角三角形和三个顶点中的每个顶点的值。
我需要进行插值以找到三角形内某个点的值。
数小时的搜索并没有真正告诉我如何做到这一点。
这是我最接近的尝试,实际上非常接近但不太正确-

                result = 
v1 * (1 - x) * (1 - y) +
v2 * x * (1 - y) +
v3 * x * y;

v1、v2 和 v3 是三角形的 3 个顶点处的值。
(x, y) 是三角形中您要求其值的点。

任何一种方法都会在这里帮助我。它不一定需要是一个单位/直角三角形。

更新信息:
我有一个由均匀分布的点组成的网格,每个点都有一个值。
我用网格上最近的 3 个点制作了一个三角形。
这是一张图片来说明它 -
enter image description here
所以我必须在 5、3 和 7 之间进行插值才能找到 x 的值。
该点也可能在另一个三角形内,这意味着您将在 5、7 和正方形左下角的值之间进行插值。

在我展示的代码中,v1 = 5,v2 = 3,v3 = 7。
x 是“x”方向上的分数距离(范围 [0-1]),y 是“y”方向上的分数距离。
在图片的示例中,x 可能约为 0.75,y 约为 0.2

这是我最接近的尝试 -
enter image description here
创建使用 -
        if (x > y) //if x > y then the point is in the upper right triangle
return
v1 * (1 - x) * (1 - y) +
v2 * x * (1 - y) +
v3 * x * y;
else //bottom left triangle
return
v1 * (1 - x) * (1 - y) +
v4 * (1 - x) * y +
v3 * x * y;

还有一次尝试——
enter image description here
创建使用 -
if (x > y)
return
(1 - x) * v1 + (x - y) * v2 + y * v3;
else
return
(1 - y) * v1 + (y - x) * v4 + x * v3;

它们都接近我需要的东西,但显然不太正确。

最佳答案

您应该使用重心坐标。这里有一篇非常详尽的文章,其中还讨论了替代解决方案以及为什么重心坐标最好:CodePlea - Interpolating in a Triangle

基本上,权重最终看起来像这样:

enter image description here

关于geometry - 三角形的插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8697521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com