【发布时间】:2013-08-26 22:05:32
【问题描述】:
我有一个摇摆应用程序,其中我有一个图像上一些点的 ArrayList。 现在我想连接这些点,使每个点都连接到它最近的邻居。
像这样:
所以我是这样开始的:
Minuatiae.java
public class Minutiae {
private int x;
private int y;
public Minutiae(int x, int y){
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
Manager.java
List<Minutiae> minuatiaePoints = new ArrayList<Minutiae>(minutiae);
for(int i = 0; i<minuatiaePoints.size(); i++){
Minutiae mPoint = minuatiaePoints.get(i);
Minutiae minPoint = minuatiaePoints.get((i+1) % minuatiaePoints.size());
int minXDistance = minPoint.getX()-mPoint.getX();
int minYDistance = minPoint.getY()-mPoint.getY();
double minDist = Math.hypot(minXDistance, minYDistance);
for(int j = 0; j < minuatiaePoints.size(); j++) // <- you had i++ here!
{
if (i == j) {
continue;
}
Minutiae testPt = minuatiaePoints.get(j);
double dist = Math.hypot(mPoint.getX() - testPt.getX(), mPoint.getY() - testPt.getY());
if (dist < minDist)
{
minDist = dist;
minPoint = testPt;
}
}
g2D.drawLine(mPoint.getX(), mPoint.getY(), minPoint.getX(), minPoint.getY());
}
但它只连接到一个最近的点。
谁能帮我解决这个问题? 任何链接或示例代码将不胜感激。
【问题讨论】:
-
请问您在 minuatiaePoints 中保存了什么:D
-
您能详细说明您如何定义最近的邻居吗?例如,为什么 6 和 5 不连接?还是 4 和 2?
-
@Gerret 细节点是图像上具有 x,y 坐标的一些点。
-
@Dukeling 关键是图应该以这样的方式连接,即不需要将每个点连接到每个其他点,但应该连接到它的邻居。
-
我猜这不是一个真正的图,其中距离是用到达节点所需的边数来衡量的,而是一个图的空间表示,它是几何距离,它尽可能地测量节点之间的距离由显示的代码推断。