双线性插值 java方式实现

本文详细介绍了双线性插值算法的原理与实现,包括线性插值的基础概念和双线性插值的计算过程。通过具体的代码示例,展示了如何在二维空间中利用三次线性插值计算任意点的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

双线性插值其实就是用了三次线性插值取计算指定位置的坐标

实现方法比较笨 就是把公式转换成了代码而已

最近对插值重新封装了一次。 更新一下 2021-03-09

首先是线性插值:

已知AC的距离,以及AC各自的值(A=0,B=10,AB的距离=20)  B点在距A 5处,AC之间的值呈线性分布,计算B点的值

    /**
     * 线性插值
     * p1------p-------p2
     * v1------v-------v2
     *
     * @param p  插值点坐标
     * @param p1 顶点坐标1
     * @param p2 顶点坐标2
     * @param v1 顶点数值1
     * @param v2 顶点数值2
     * @return 插值后的数值
     */
    public static double linearInterpolation(double p, double p1, double p2, double v1, double v2) {
        if (NumberUtil.compare(v1, v2) == 0 || NumberUtil.compare(p1, p2) == 0) {
            //value值相等 距离为0 不进行插值计算
            return v1;
        } else {
            return ((p2 - p) / (p2 - p1) * v1) + ((p - p1) / (p2 - p1) * v2);
        }
    }

使用以上代码就可计算出B点的值

双线性插值

引用张度娘的图片,双线性 就像上面说的 使用3次线性插值 就可计算到P点的值  

先计算R2 R1的值 然后根据R2 R1 在去计算P点的值 (使用线性插值去计算)

这是我这边的实现插值部分的代码代码

    /**
     * 双线性插值 计算点v处的实际值
     * 点位分布如图  v(x,y) v1(x1,y1) v2(x1,y2) v3(x2,y1) v4(x2,y2)
     * v2-----------v4
     * |            |
     * r1-----v-----r2
     * |            |
     * v1-----------v3
     * 先通过线性插值计算r1 r2处的实际值 然后通过r1 r2计算v的值
     *
     * @param x  实际x坐标
     * @param y  实际y坐标
     * @param x1 x1
     * @param x2 x2
     * @param y1 y1
     * @param y2 y2
     * @param v1 左下value
     * @param v2 左上value
     * @param v3 右下value
     * @param v4 右上value
     * @return double
     */
    public static double doubleLinearInterpolation(double x, double y,
                                                   double x1, double x2, double y1, double y2,
                                                   double v1, double v2, double v3, double v4) {
        double r1 = linearInterpolation(x, x1, x2, v1, v2);
        double r2 = linearInterpolation(x, x1, x2, v3, v4);
        return linearInterpolation(y, y1, y2, r1, r2);
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值