请教关于SPH P2G差值实现的理解?

为了理解差值过程的逻辑,我将课上提供的程序修改为4*4网格,1个颗粒的体系,然后将颗粒信息输出,但是依旧感觉理解不清楚这里的差值逻辑,请大家指点。

从下面的输出中可以看到,颗粒的位置为xp: [1.016616, 2.518644],这个坐标是是x[p] * inv_dx计算得到,相当于相对于网格的无量纲坐标,大概位置是下图红点处。base坐标是base: [0, 2],我理解为从base位置处,往上遍历9个网格,去计算这些网格的权值。

具体计算的时候,这里的代码我理解不太清楚,我能猜到的是,对于w,其中有三个元素,如果将fx的横坐标带进去,第一个元素应该是颗粒和第一列网格(以base为基准)的权值,第二个元素是颗粒和第二列的权值,以此类推。如果把fx的纵坐标带进去,第一个元素应该是颗粒和第一行网格的的权值,以此类推。
但是具体这里的w的计算逻辑不太理解,为什么用fx带入到w中计算就能得到权值,能给出具体的步骤吗?非常感谢!