【发布时间】:2016-07-10 15:34:06
【问题描述】:
我正在尝试找到一种方法来通过 ShapeRenderer 的线方法(首先是 Vector2,其次是 Vector2)来连接一堆点。所以我会解释然后显示图像和代码来帮助。
有一个 Vector2 类型的列表,我需要找到下一个最近的顶点,然后排除第一个点。这是我的意思的图像。我在图像中标记了循环的迭代。
第一次迭代。)它找到最近的点。
第二次迭代。)它看到第一个点更接近但仍然选择第三个点。这是核心问题,我需要确保第二点找到第三点,即使第一点更接近。
这是我尝试执行此操作的代码。
private void cleanVertices(Array<Vector2> verts){
newVerts = new Array<Vector2>();
Vector2 tmpKey, tmpClose = null;
tmpKey = verts.get(0);
for(int i = 0; i < verts.size; i++){
for(int k = 0; k < (verts.size - 1); k++){
if(k == i)
continue;
//Distance formula
double dist = MathFactory.distance(verts.get(i), verts.get(k));
if(MathFactory.distance(verts.get(i), verts.get(k + 1)) < dist){
tmpClose = verts.get(k + 1);
}else
tmpClose = verts.get(i);
}
tmpKey = tmpClose;
newVerts.add(tmpClose);
}
}'
这并不能满足我的需要,相反,它似乎连接了 x 轴上最近的点。我迫切需要这方面的帮助。谢谢!
【问题讨论】: