三线性插值(Trilinear Interpolation)详解

三线性插值(Trilinear Interpolation)详解
在这里插入图片描述

x d = x − x 0 x 1 − x 0 , y d = y − y 0 y 1 − y 0 , z d = z − z 0 z 1 − z 0 x_d=\frac{x-x_0}{x_1-x_0}, y_d=\frac{y-y_0}{y_1-y_0}, z_d=\frac{z-z0}{z_1-z_0} xd=x1x0xx0,yd=y1y0yy0,zd=z1z0zz0
x0表示在x下方一个方格点,x1表示在x上方的一个方格点,对于y0、y1、z0、z1是同样的意思。
xd、yd、zd表示x、y、z在较小相关坐标的差值(这是维基百科中的解释)

首先,我们沿着x轴方向插值
在这里插入图片描述

c 00 = V [ x 0 , y 0 , z 0 ] ( 1 − x d ) + V [ x 1 , y 0 , z 0 ] x d c_{00}=V[x_0,y_0,z_0](1-x_d) + V[x_1,y_0,z_0]x_d c00=V[x0,y0,z0](1xd)+V[x1,y0,z0]xd
c 01 = V [ x 0 , y 0 , z 1 ] ( 1 − x d ) + V [ x 1 , y 0 , z 1 ] x d c_{01}=V[x_0,y_0,z_1](1-x_d) + V[x_1,y_0,z_1]x_d c01=V[x0,y0,z1](1xd)+V[x1,y0,z1]xd
c 10 = V [ x 0 , y 1 , z 0 ] ( 1 − x d ) + V [ x 1 , y 1 , z 0 ] x d c_{10}=V[x_0,y_1,z_0](1-x_d) + V[x_1,y_1,z_0]x_d c10=V[x0,y1,z0](1xd)+V[x1,y1,z0]xd
c 11 = V [ x 0 , y 1 , z 1 ] ( 1 − x d ) + V [ x 1 , y 1 , z 1 ] x d c_{11}=V[x_0,y_1,z_1](1-x_d) + V[x_1,y_1,z_1]x_d c11=V[x0,y1,z1](1xd)+V[x1,y1,z1]xd
V [ x 0 , y 0 , z 0 ] V[x0,y0,z0] V[x0,y0,z0]表示该函数在(x0,y0,z0)上的值, 然后再沿着y轴插值
c 0 = c 00 ( 1 − y d ) + c 10 y d c_0=c_{00}(1-y_d)+c_{10}y_d c0=c00(1yd)+c10yd
c 1 = c 01 ( 1 − y d ) + c 11 y d c_1=c_{01}(1-y_d)+c_{11}y_d c1=c01(1yd)+c11yd
最后再沿着z轴插值
c = c 0 ( 1 − z d ) + c 1 z d c=c_0(1-z_d)+c_1z_d c=c0(1zd)+c1zd

如此我们就得到了一个点的值。三线性插值的结果与沿三个轴的插值步骤的顺序无关:任何其他顺序,例如沿x,然后沿y,最后沿z,产生相同的值。
根据以上推导公式我们可以得到一个完整的公式

在这里插入图片描述

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值