我在形状渲染器上使用多边形,问题是用户应该能够随时添加顶点,基本上顶点不是由我设置的,而是由用户设置的。我所做的是每当用户添加一个点时,我将它们添加到arrayList。
sklearn.mixture.GaussianMixture
当我尝试在shapeRenderer
上渲染多边形时,我遇到了这个问题ArrayList<Float> v = new ArrayList<Float>();
public void ontouch(screenX, screenY){
v.add(screenX);
v.add(screenY)
}
但我只是得到错误。
我正在努力实现这样的目标,如果你知道一种不同的方式,那么这将是非常有帮助的。顺便说一句,我也使用box2d,这不需要碰撞,只是为了用户的视觉效果。
答案 0 :(得分:1)
我个人这样做的方法是使用LinkedList
个Vector2
个对象。 Vector2
个对象存储两个浮点数,因此对于每次单击,您都会获得x和y坐标并创建一个新的Vector2
对象。通过将它们存储在LinkedList中,您可以随时以正确的顺序检索点,以便您可以连接一条线。
LinkedList<Vector2> v = new LinkedList<Vector2>();
public void ontouch(screenX, screenY){
v.add(new Vector2(screenX, screenY)); // add Vector2 into LinkedList
}
您想如何绘制线条或连接点取决于您。
另一个原因是只保留最近点击的两个点,然后抛弃其他点。这意味着存储线而不是点。如果这些行是对象,那么你可以这样做:
Vector2 previousPoint;
Vector2 currentPoint;
ArrayList<MyLineClass> lines = new ArrayList<MyLineClass>();
public void ontouch(screenX, screenY){
if(previousPoint == null){
previousPoint = new Vector2(screenX, screenY);
}else{
previousPoint = currentPoint;
currentPoint = new Vector2(screenX, screenY);
lines.add(new MyLineClass(currentPoint, previousPoint)
}
}
我从袖口写下了这个,但我相信这个例子应该有用。
编辑:
好东西LibGDX是开源的。如果要使用浮点数数组,则该方法只是以交替顺序获取x和y坐标。所以对于每个索引:
0 = x1
1 = y1
2 = x2
3 = y2
4 = x3
5 = y3
等
这是一种奇怪的方法,但我认为它有效。