使用libgdx绘制曲线

时间:2015-09-28 17:53:08

标签: java libgdx

我使用libgdx尝试使用此doc绘制一些曲线。

但是当我渲染时,它只是一条直线,任何想法为什么它都没有曲线?

我假设myCatmull.valueAt应填充曲线上的正确点。

public class IABezier {

    Vector2[] points = new Vector2[100];

    public IABezier() {

        Vector2[] dataSet = new Vector2[2];
        dataSet[0] = new Vector2(10.0f, 10.0f);
        dataSet[1] = new Vector2(20.0f, 20.0f);

        CatmullRomSpline < Vector2 > myCatmull = new CatmullRomSpline < Vector2 > (dataSet, true);
        for (int i = 0; i < 100; ++i) {

            points[i] = new Vector2();
            myCatmull.valueAt(points[i], ((float) i) / ((float) 100 - 1));
        }
    }

    public void draw(ShapeRenderer sRenderer) {

        sRenderer.begin(ShapeType.Line);
        sRenderer.identity();
        for (int i = 0; i < 100 - 1; ++i) {

            sRenderer.line(points[i], points[i + 1]);
        }
        sRenderer.end();
    }
}

已呈现..

screenshot

1 个答案:

答案 0 :(得分:1)

their docs至少需要四个样本。因此,您必须添加更多样本才能查看实际曲线。

    Vector2[] dataSet = new Vector2[6];
    dataSet[0] = new Vector2(10.0f, 10.0f);
    dataSet[1] = new Vector2(20.0f, 20.0f);
    dataSet[2] = new Vector2(20.0f, 10.0f);
    dataSet[3] = new Vector2(10.0f, 20.0f);
    dataSet[4] = new Vector2(15.0f, 15.0f);
    dataSet[5] = new Vector2(25.0f, 25.0f);

catmullrom spline