LagrangePolynomialApproximation是一个Cesium中的函数,用于执行基于拉格朗日多项式的拟合。
LagrangePolynomialApproximation(points)
points
: Cartesian3[]
类型,表示用于拟合的点的数组,每个点都是Cartesian3
类型。Function
类型的函数,用于返回给定$x$值下的有效估计函数值。以下代码片段演示了如何使用LagrangePolynomialApproximation函数,对一组给定的点进行插值,并且绘制插值曲线。
var viewer = new Cesium.Viewer('cesiumContainer');
var bluePositions = [
Cartesian3.fromDegrees(0, 0),
Cartesian3.fromDegrees(10, 0),
Cartesian3.fromDegrees(10, 10),
Cartesian3.fromDegrees(0, 10),
];
var blueEntity = viewer.entities.add({
name: 'Blue polylines',
polyline: {
positions: bluePositions,
width: 5,
material: Color.BLUE
}
});
var redPositions = [
new Cartesian3(0, 0, 0),
new Cartesian3(10, 0, 0),
new Cartesian3(10, 10, 0),
new Cartesian3(0, 10, 0),
];
var points = [];
for (var i = 0; i < redPositions.length; i++) {
points.push(Cartesian3.fromDegrees(redPositions[i].x, redPositions[i].y));
}
var f = LagrangePolynomialApproximation(points);
var redEntity = viewer.entities.add({
name: 'Red interpolated polylines',
polyline: {
positions: new CallbackProperty(function (time) {
var interpolatedPositions = [];
for (var i = 0; i < 100; i++) {
var t = i / 100;
var x = t * 10;
var y = f(x);
interpolatedPositions.push(Cartesian3.fromDegrees(x, y));
}
return interpolatedPositions;
}, false),
width: 5,
material: Color.RED
}
});
viewer.zoomTo(viewer.entities);
运行该代码将产生以下结果:
注: LagrangePolynomialApproximation函数的实现并不直接使用拉格朗日多项式。实际上,这个功能是通过使用分段线性插值函数来实现的,用于在给定的点之间进行插值。在绝大多数情况下,这应该是足够准确并且要高效得多。