gpt4 book ai didi

java - Catmull Rom Spline 实现 (LibGDX)

转载 作者:搜寻专家 更新时间:2023-11-01 08:41:28 24 4
gpt4 key购买 nike

我想在我的屏幕上生成一个随机样条。这是我目前所拥有的:

public class CurvedPath {

Random rn;
CatmullRomSpline<Vector2> curve;

float[] xPts;
float[] yPts;
Vector2[] points;

public CurvedPath(){
points = new Vector2[10];
rn = new Random();
curve = new CatmullRomSpline<Vector2>(points,false);

for(int i = 0 ; i < 10; i++){
xPts[i] = rn.nextFloat()*SampleGame.WIDTH;
yPts[i] = SampleGame.HEIGHT*i/10;
}


}

我对提供的有关如何使用 CatmullRomSpline 对象 ( https://github.com/libgdx/libgdx/wiki/Path-interface-&-Splines) 的文档感到很困惑

基本上,我在这里尝试做的是生成 10 个随机点,均匀分布在屏幕的高度上,并随机放置在屏幕的宽度上,以创建随机的弯曲路径。

因此在构造函数的 for 循环中,您可以看到我为样条生成了每个控制点的 x 和 y 值。

如何将这些点输入到样条对象中并将其呈现在屏幕上?

-谢谢

更新让我改写我的问题更具体一点..

我的控制点由 xPtsyPts 表示。 现在我想获得沿着样条曲线的点,如何使用这两个 vector 来实现? CatmullRomSpline 的构造函数采用一个 Vector2,而不是两个 float[]

最佳答案

你做了什么。填写点:

curve = new CatmullRomSpline<Vector2>(points,false);

获取曲线上的一个点:

Vector2 point = new Vector2();
curve.valueAt(point, 0.5f);

valueAt()参数说明:

1(点)你要找的点存储在Vector2对象中。

  1. 在0和1之间 float ,0是第一个点,1是最后一个点。 0.5f 是中间值。此 float 表示从第一个点到最后一个点的孔距。

获取并渲染 100 个点可以是这样的:

Vector2 point = new Vector2();
for (int i = 0; i <= 100; i++) {

curve.valueAt(point, i * 0.01f);

// draw using point.x and point.y
}

对您编辑的问题的回答:

for(int i = 0 ; i < 10; i++){
points[i].x = rn.nextFloat()*SampleGame.WIDTH;
points[i].y = SampleGame.HEIGHT*i/10;
}
curve = new CatmullRomSpline<Vector2>(points,false);

关于java - Catmull Rom Spline 实现 (LibGDX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32161619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com