java 曲线插值_Java 2D加权数据插值

假设你有一个Point类,你可以使用(例如java.awt.Point),你可以把权重放在一个Map中:

Map points = new HashMap();

points.put( new Point(2,5), 30 )

...

然后,您创建一个图像,对于每个x,y坐标,找到最好的分数.我假设得分是反向距离乘以表中点数的权重.如果是这样,就是这样的:

image = createBitmap( width, height )

for( int x = 0; x < width; x++ )

for( int y = 0; y < height; y++ )

{

double maxScore = -Double.MAX_VALUE

for( Point p : points.keySet() )

{

double score = points.get(p)/p.distance( x, y ) //Inverse distance times point weight

minDist = Math.max( maxScore, score )

}

image.setPixelColour( x, y, getColorForDistance( 1/minDist * points.get(p) )

}

getColourForDistance(double dist)应该很明显,虽然你必须设置正确的级别.我假设createBitmap(width,height)是创建一个图像.您正在制作什么样的图像取决于您的应用程序,以及它是否具有setPixelColour方法或类似.积分类的选择也取决于你的应用程序.

这不是优化的 – 它至少是O(x * y * p),其中p是点数.如果p变大,您可能需要查看更合理的数据结构来存储点数.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值