CatmullRomspline没有给出任何输出

时间:2013-05-23 06:55:17

标签: javascript jquery dojo cartesian cesium

我尝试在cesium sandcastle中使用以下代码创建从费城到洛杉矶的样条曲线。

        //catmulrom spline.
        var controlPoints = [
    {point: new Cesium.Cartesian3(1235398.0, -4810983.0, 4146266.0), time: 0.0},
    {point: new Cesium.Cartesian3(1372574.0, -5345182.0, 4606657.0), time: 1.5},
    {point: new Cesium.Cartesian3(-757983.0, -5542796.0, 4514323.0), time: 3.0},
    {point: new Cesium.Cartesian3(-2821260.0, -5248423.0, 4021290.0), time: 4.5},
    {point: new Cesium.Cartesian3(-2539788.0, -4724797.0, 3620093.0), time: 6.0}
];
var spline = new Cesium.CatmullRomSpline(controlPoints);

它没有给我任何错误。代码似乎很好。但样条没有被绘制。有人可以解决这个问题。您可以尝试以下网站中的代码: -

http://cesium.agi.com/Cesium/Apps/Sandcastle/index.html?src=Hello%20World.html

CatmullRomSpline的参考资料可以在这里找到: - http://cesium.agi.com/Cesium/Build/Documentation/CatmullRomSpline.html

非常感谢

P.S它的javascript有人请看一下,让我知道我哪里出错了。

1 个答案:

答案 0 :(得分:0)

实际上你的代码应该引发一个错误,因为CatmullRomSpline构造函数有一个强制参数,它是一个形式的JSON对象:{times:Array,points:Array},它们是相同长度的数组。

提醒一下,我看了一下您提供的Cesium参考文档,但实际上看起来Spline对象似乎根本不打算绘制!(不是直接,至少。 )如果我没有误会,在Cesium中绘制内容的唯一方法是使用widget.scene.primitives对象,并且无法直接为他的某些方法(例如,添加样条曲线)作为参数。

所以我认为唯一的方法是使用折线插入(矛盾地!)它,当然比你的初始点更精确地用一个脚本来评估(伪代码:spline.evaluate(0+i*d), i=0..max(times)/d)常规曲线间隔d

祝你好运!