hej!
Implementuje RANSACA i mam problem z wyszukiwaniem punktów kluczowych. Muszę znaleźć najbliższego sąsiada punktu z listy A w liście B, potem na odwrót. Punkty kluczowe to te, które po tym zabiegu będą wskazywać na siebie nawzajem. Robię to w ten sposób:
void KeyPointC(ArrayList<point> ListA,ArrayList<point> ListB,ArrayList<point> ListC){
FriendCalculator(ListA,ListB);
FriendCalculator(ListB,ListA);
point tempA;
point tempB;
for(int i=0;ListA.size()>i;i++){
tempA=ListA.get(i);
tempB=tempA.n;
if(tempA==tempB.n){
System.out.printf("%d Jestesmy najlepszymi kolegami A:x:%f y:%f B:x:%f y:%f\n",i, tempA.x,tempA.y,tempA.n.x,tempA.n.y);
}
}
}
void FriendCalculator(ArrayList<point> ListA, ArrayList<point> ListB){
point tempA;
point tempB;
for(int i=0;ListA.size()>i;i++){
tempA=ListA.get(i);
for(int j=0;ListB.size()>j;j++){
tempB=ListB.get(j);
float dist=0 ;
float sum=0;
for(int k=0; tempA.values.size()>k;k++){
sum=(tempA.values.get(k)-tempB.values.get(k))*(tempA.values.get(k)-tempB.values.get(k));
dist=sum+dist;
}
dist=(float) Math.sqrt(dist);
if(tempA.distance>dist || tempA.distance==0){
tempA.distance=dist;
tempA.n=tempB;
}
else{}
//System.out.printf("%d. Distance: %f \n",i, tempA.distance);
}
//System.out.printf("..\n");
//System.out.printf("Distance: %d \n", tempA.distance);
}
}
Coś jest nie tak, gdyż okazuje się że każdy punkt z listy A jest kluczowy.
Tutaj dokładniejszy opis problemu.
Dzięki za wyrozumiałość, jestem początkująca.