gpt4 book ai didi

algorithm - 三线插值

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:40:15 25 4
gpt4 key购买 nike

所以我正在尝试编写一个三线性插值函数,但在想出它时遇到了一些麻烦。

所以首先我们有一个一维插值:

float interpolate1D(float v1, float v2, float x){
return v1*(1-x) + v2*x;
}

然后是二维插值:

float interpolate2D(float v1, float v2, float v3, float v4, float x, float y){

float s = interpolate1D(v1, v2, x);
float t = interpolate1D(v3, v4, x);
return interpolate1D(s, t, y);
}

但是一旦变成 3D,事情就变得棘手了。我不太清楚如何使用 2D 插值函数实现 3D 插值器。我不知道为什么我有这种心理障碍,因为它应该只是一个简单的扩展,但我想所有不同的变量都在让我失望。所以我开始了下面的一个功能,但它不完整,我需要帮助来完成它。

float interpolate3D(v1, v2, v3, v4, v5, v6, v7, v8, float x, float y, float z){


float s = interpolate2D(v1, v2, v3, v4, x, y);
float t = interpolate2D(v5, v6, v7, v7, x, z);

//What do I do next?
}

最佳答案

您的代码有 2 个问题 - v7 出现了两次。

让我为你解释一下:

float interpolate3D(v1, v2, v3, v4, v5, v6, v7, v8, float x, float y, float z)
{
float s = interpolate2D(v1, v2, v3, v4, x, y);
float t = interpolate2D(v5, v6, v7, v8, x, y);
return interpolate1D(s, t, z);
}

将此与 interpolate2D() 进行比较:

  • 使用相同的变量(x 表示 1D,(x, y) 表示 2D)按“较低维度”(1D 表示 2D,2D 表示 1D)插值两次
  • 使用剩余变量(y 表示 2D,z 表示 3D)对中间结果进行 1D 插值

另请注意 - 我们不知道您如何放置 v1 到 v8。但如果操作正确,此功能将起作用。

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

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